如果我编写一个脚本,例如包含console.log(__dirname);
日志的值__dirname
。但是,如果我对 Node REPL 尝试相同的操作,就会发生这种情况:
> console.log(__dirname)
ReferenceError: __dirname is not defined
想法?
如果我编写一个脚本,例如包含console.log(__dirname);
日志的值__dirname
。但是,如果我对 Node REPL 尝试相同的操作,就会发生这种情况:
> console.log(__dirname)
ReferenceError: __dirname is not defined
想法?
由此看来,node.js 中的 __dirname 和 ./ 有什么区别?由d512编写
在 Node.js 中,
__dirname
始终是当前正在执行的脚本所在的目录(参见这里)。因此,如果您输入__dirname
/d1/d2/myscript.js,则值将是 /d1/d2。
文档说这__dirname
等于path.dirname
. 如果你输入path.dirname
repel,它会告诉你:
> console.log(path.dirname)
[Function: dirname]
undefined
现在我的猜测是:因为它是一个 repl,所以你没有一个文件存储在磁盘的某个位置。它只是读取命令,评估它并将其打印到控制台。
对 REPLS 有更多经验的人可能会给出更长更详细的答案,但我认为这阐明了这个概念。