从节点手册中,我可以使用__dirname
获取文件的目录,但从REPL中似乎没有定义。这是我这方面的误解吗?或者错误在哪里?
$ node
> console.log(__dirname)
ReferenceError: __dirname is not defined
at repl:1:14
at REPLServer.eval (repl.js:80:21)
at Interface.<anonymous> (repl.js:182:12)
at Interface.emit (events.js:67:17)
at Interface._onLine (readline.js:162:10)
at Interface._line (readline.js:426:8)
at Interface._ttyWrite (readline.js:603:14)
at ReadStream.<anonymous> (readline.js:82:12)
at ReadStream.emit (events.js:88:20)
at ReadStream._emitKey (tty.js:320:10)
发布于 2012-01-11 18:12:02
__dirname
仅在脚本中定义。它在REPL中不可用。
尝试创建脚本a.js
console.log(__dirname);
并运行它:
node a.js
您将看到打印的__dirname
。
增加了背景说明:__dirname
的意思是‘这个脚本的目录’。在REPL中,您没有脚本。因此,__dirname
没有任何实际意义。
发布于 2019-09-17 18:21:05
在ES6使用中:
import path from 'path';
const __dirname = path.resolve();
在使用--experimental-modules
调用节点时也可用
发布于 2014-09-12 04:48:07
正如@qiao所说,您不能在节点repl中使用__dirname
。但是,如果您需要在控制台中使用此值,您可以使用path.resolve()
或path.dirname()
。不过,path.dirname()
只会给你一个“。所以,可能没那么有用。请务必使用require('path')
。
https://stackoverflow.com/questions/8817423
复制相似问题