1

如果我编写一个脚本,例如包含console.log(__dirname);日志的值__dirname。但是,如果我对 Node REPL 尝试相同的操作,就会发生这种情况:

 > console.log(__dirname)
 ReferenceError: __dirname is not defined

想法?

4

1 回答 1

1

由此看来,node.js 中的 __dirname 和 ./ 有什么区别?d512编写

在 Node.js 中,__dirname始终是当前正在执行的脚本所在的目录(参见这里)。因此,如果您输入__dirname/d1/d2/myscript.js,则值将是 /d1/d2。

文档说这__dirname等于path.dirname. 如果你输入path.dirnamerepel,它会告诉你:

> console.log(path.dirname)
[Function: dirname]
undefined

现在我的猜测是:因为它是一个 repl,所以你没有一个文件存储在磁盘的某个位置。它只是读取命令,评估它并将其打印到控制台。

对 REPLS 有更多经验的人可能会给出更长更详细的答案,但我认为这阐明了这个概念。

于 2018-05-02T16:12:39.953 回答