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 

我明白了

开始

执行

内容未定义

当我记录错误时

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

我明白了

开始

执行

内容是 asdas 错误:ENOENT,打开 'C:\Windows\system32\hello.txt'

所以我猜这个错误是那个节点正在寻找system32,而不是桌面......?

谢谢!

4

1 回答 1

3

Node.js从当前工作目录而不是从当前脚本/模块解析相对路径。

如果使用所有from路径后仍然没有找到绝对路径,则也使用当前工作目录。

在这种情况下,这将是:

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

要指定相对于脚本的路径,您必须解析/加入/等。自己的路径__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 回答