-Suppose Node.jsの私は、「test.js」と呼ばれるテスト/でテストファイルを持っており、それがfs.readFileSyncはファイル相対ではありませんか?
const file = fs.readFileSync("../file.xml");
を持っている「file.xml」
-Supposeと呼ばれる私のプロジェクトのルートにファイルを持っています
node ./tests/test.js
を私のプロジェクトのルートから実行すると、../file.xmlは存在しません。 testsディレクトリ内から同じコマンドを実行すると、動作します。
fs.readFileSyncは、実際にスクリプトが存在する場所ではなく、スクリプトが呼び出されたディレクトリからの相対パスのようです。もし私がfs.readFileSync("./file.xml")
をtest.jsに書いていたら、もっと混乱して見えるでしょうし、相対的なパスであるrequireステートメントの中で相対的なものです。
これはなぜですか?
fs.readFileSyncのパスを書き換えないようにするにはどうすればよいですか?
'__dirname'が、必ずしも現在の作業ディレクトリと同じではありませんが、' FSを。 readFileSync() 'は現在の作業ディレクトリを使用します。現在の作業ディレクトリは、あなたがnodeを起動したときのものに設定されている可能性があります。 – jfriend00