首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么在节点REPL中没有定义__dirname?

为什么在节点REPL中没有定义__dirname?
EN

Stack Overflow用户
提问于 2012-01-11 18:05:47
回答 7查看 155.5K关注 0票数 186

从节点手册中,我可以使用__dirname获取文件的目录,但从REPL中似乎没有定义。这是我这方面的误解吗?或者错误在哪里?

代码语言:javascript
复制
$ 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)
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-01-11 18:12:02

__dirname仅在脚本中定义。它在REPL中不可用。

尝试创建脚本a.js

代码语言:javascript
复制
console.log(__dirname);

并运行它:

代码语言:javascript
复制
node a.js

您将看到打印的__dirname

增加了背景说明:__dirname的意思是‘这个脚本的目录’。在REPL中,您没有脚本。因此,__dirname没有任何实际意义。

票数 218
EN

Stack Overflow用户

发布于 2019-09-17 18:21:05

在ES6使用中:

代码语言:javascript
复制
import path from 'path';
const __dirname = path.resolve();

在使用--experimental-modules调用节点时也可用

票数 51
EN

Stack Overflow用户

发布于 2014-09-12 04:48:07

正如@qiao所说,您不能在节点repl中使用__dirname。但是,如果您需要在控制台中使用此值,您可以使用path.resolve()path.dirname()。不过,path.dirname()只会给你一个“。所以,可能没那么有用。请务必使用require('path')

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8817423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档