0

ノードの学習を始めたばかりです。これが私の問題です、私はsample.jsファイルを手に入れました

var fs=require("fs");
console.log("starting");
fs.readFile("hello.txt" , function(error,data){
    console.log("content is asdas " + data);
});
console.log("executed");

コンテンツを含むhello.txt、両方とも私のデスクトップにあります

hello 

これをpowershellまたはcmdで管理者として実行すると

C:\Windows\system32\ node C:\Users\X\Desktop\sample.js 

私は得る

起動

実行中

コンテンツは asdas undefined です

エラーをログに記録するとき

var fs=require("fs");
console.log("starting");
fs.readFile("hello.txt" , function(error,data){
    console.log("content is asdas " + error);
});
console.log("executed");

私は得る

起動

実行中

内容は asdas Error:ENOENT,open 'C:\Windows\system32\hello.txt' です

そのエラーは、ノードがデスクトップではなくsystem32を探しているということだと思います...?

ありがとう!

4

1 に答える 1

3

Node.jsは、現在のスクリプト/モジュールからではなく、現在の作業ディレクトリからの相対パスを解決します。

すべてのパスを使用しfromても絶対パスが見つからない場合は、現在の作業ディレクトリも使用されます。

この場合、次のようになります。

console.log(process.cwd());
// outputs: C:\Windows\system32\

スクリプトからの相対パスを指定するには、resolve/join/etc を実行する必要があります。からのパス__dirname

fs.readFile(__dirname + "/hello.txt", /* ... */);
fs.readFile(path.join(__dirname, "hello.txt"), /* ... */);
fs.readFile(path.resolve(__dirname, "hello.txt"), /* ... */);
于 2013-08-31T11:19:18.013 に答える