Node.jsのパスモジュールのjoinメソッドと__dirnameと./の違い

Node.jsのパスモジュールのjoinメソッドと__dirnameと./の違い

1.結合方法

path.join()メソッドは、プラットフォーム固有の区切り文字を区切り文字として使用して、指定されたすべてのパスフラグメントを結合し、結果のパスを正規化します。

長さがゼロのパスフラグメントは無視されます。連結されたパス文字列が長さゼロの文字列の場合、「。」が返され、現在の作業ディレクトリが示されます。

path.join('/foo', 'bar', 'baz/asdf', 'quux', '..');
// 返回: '/foo/bar/baz/asdf'

path.join('foo', {
    
    }, 'bar');
// 抛出 'TypeError: Path must be a string. Received {}'

パスフラグメントが文字列でない場合はTypeErrorをスローします

次に、__dirnameと./の違い

__dirname実行されたjsファイルの絶対パスを常に指す

例を見る

__dirnameが/react-admin-server/routers/file-upload.jsファイルに書き込まれる場合、その値は/ react-admin-server/routersです。

代わり./に、ノードコマンドを実行したパス(作業パスなど)が返されます

require()で使用される場合は特殊なケースがあり./、パスは次のようなスクリプトファイルの相対パスrequire()になり

例を見てみましょう。
次のディレクトリ構造があるとします。

/react-admin-server
  /routers
    file-upload.js 

次に、file-upload.jsに次のコードがあり、ターミナルで次のコマンドを実行します

cd /react-admin-server/routers
node file-upload.js 
var path = require("path");
console.log(path.resolve(".")); //  /react-admin-server/routers
console.log(path.resolve(__dirname)); //  /react-admin-server/routers

.は現在の作業ディレクトリであり、この場合、の/react-admin-server/routersファイルパスです。この場合は__dirnamefile-upload.js/react-admin-server/routers

ただし、作業ディレクトリが/react-admin-server

cd /react-admin-server
node routers/file-upload.js 

取得します

/react-admin-server
/react-admin-server/routers

この時点で、.作業ディレクトリをポイントします。つまり/react-admin-server__dirnameまだをポイントし/react-admin-server/routersます。

3.包括的なアプリケーション

//__dirname表示当前文件所在的根路径,也就是/routers,然后..表示向上退一级,也就是到了项目根目录,然后public/upload表示到了这个目录
const dirPath = path.join(__dirname, '..', 'public/upload')

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_41880073/article/details/123096052