1. ホーム
  2. node.js

[解決済み] fs.readFileSyncがファイル相対化されていない?ノードジッ

2022-04-26 09:50:06

質問

-というファイルがプロジェクトのルートにあるとします。 file.xml .

-tests/に"test.js"というテストファイルがあり、そのファイルには

const file = fs.readFileSync("../file.xml");

今、私が実行すると node ./tests/test.js 私のプロジェクトのルートから、次のようになります。 ../file.xml は存在しない。testsディレクトリの中から同じコマンドを実行すると、うまくいくのです。

と思われます。 fs.readFileSync は、スクリプトが実際にある場所ではなく、スクリプトが呼び出されるディレクトリからの相対パスです。もし私が fs.readFileSync("./file.xml")test.js の相対パスと整合性がなく、より混乱しそうです。 require 文はファイルからの相対パスです。

これはなぜでしょうか?のパスを書き換える必要がないようにするにはどうしたらよいでしょうか? fs.readFileSync ?

解決方法は?

カレントディレクトリではなく、ソースファイルの位置への相対パスを解決するには、次のようにします。 path.resolve :

const path = require("path");
const file = fs.readFileSync(path.resolve(__dirname, "../file.xml"));