私はnodejsを初めて使っています。この応答が間違っているの決意〜(UNIXのホームディレクトリ)の例〜FOO、〜ホーム/ fooの/バーへ 、/ホーム/バーnode.jsの展開/解決
> path.normalize('~mvaidya') '~mvaidya' > path.resolve('~mvaidya') '/home/mvaidya/~mvaidya' >
をノードすることができます。 〜mvaidyaが/ home/mvaidyaに解決する必要があります。
私はnodejsを初めて使っています。この応答が間違っているの決意〜(UNIXのホームディレクトリ)の例〜FOO、〜ホーム/ fooの/バーへ 、/ホーム/バーnode.jsの展開/解決
> path.normalize('~mvaidya') '~mvaidya' > path.resolve('~mvaidya') '/home/mvaidya/~mvaidya' >
をノードすることができます。 〜mvaidyaが/ home/mvaidyaに解決する必要があります。
このNodeJSライブラリは、非同期コールバックを介してこの機能をサポートしています。それはetc-passswdのlibを使って拡張を実行するので、おそらくWindowsや他のUnix/Linux以外のプラットフォームには移植できません。
だけ現在のユーザーのホームページを展開したい場合は、この軽量のAPIを使用すると、必要なすべてのかもしれません。それはまた、同期するので、使用するのが簡単で、ほとんどのプラットフォームで動作します。
例:
expandHomeDir = require('expand-home-dir')
expandHomeDir('~')
// => /Users/azer
expandHomeDir('~/foo/bar/qux.corge')
// => /Users/azer/foo/bar/qux.corge
別の関連libには、任意のプラットフォーム上でユーザのホームディレクトリを返しますホームディレクトリである:私は今日
https://www.npmjs.org/package/home-dir
使用されたhttps://github.com/sindresorhus/untildify
私はOSX上で動作し、うまくいきました。
QZ Supportと記載されていますが、OSX/Linuxではprocess.env.HOME
を使用できます。ここには依存関係のない単純な関数があります。 ~
拡大がbash
(またはシェル)特定のものですので、これはノードではありません
const path = require('path');
function resolveHome(filepath) {
if (filepath[0] === '~') {
return path.join(process.env.HOME, filepath.slice(1));
}
return filepath;
}
これは技術的に '/ home/foo'(少なくともzshでは)に解決する必要がある場合、'〜foo'を '/ home/
理由があります。正しく逃げる方法は不明です。詳細は、this commentを参照してください。
これを提供するさまざまなライブラリ、コードのほとんどわずか数行...
https://npm.im/untildifyがあります。 os.homedir()
をあまり超えることはありません。index.js#L10
https://npm.im/expand-tildeを参照してください。基本的に同じを達成するためにos-homedir
を使用してください。index.js#L12
https://npm.im/tilde-expansion;これは、非常にクロスプラットフォームのようですので、あなたはおそらくこれを自分でやりたいindex.js#L21
見ていないので、etc-passwd
を使用しています。
Linux/Unix/Macの現在のホームディレクトリでOKの場合は、 'process.env。他の記事で言及されているノードモジュールソリューションの代わりに、「HOME」がうまく機能しているようです。例えばしかし、 '〜/ somepath'は' process.env.HOME + '/ somepath''となるかもしれませんが、 '〜someuserhome/somepath'の元の問題は解決されません。 – tresf