【发布时间】:2021-01-16 18:34:26
【问题描述】:
好的,在 Node.js 中,当使用 module.exports 时,你会使用:
__dirname
获取当前文件的位置。
例如,如果您从文件夹 y 中的 x.js 运行它,您会得到如下内容:
blah/blah/blah/y
现在,我不能用了,process.cwd 因为返回了 "root" 脚本的目录,而且因为我用的是import/export,所以我必须解决对于这种 hacky 方法:
// jshint -W024
import path from "path";
import url from "url";
const __dirname = path.dirname(url.fileURLToPath(import.meta.url));
注意:-W024,忽略代码可防止 JSHint 引发 "Expected an identifier and instead saw 'import' (a reserved word)" 警告。
另外,我不能模块化它,使用:
export default __dirname;
因为它会返回模块导出__dirname的目录。
将其转换为函数,如下所示:
// jshint -W024
import path from "path";
import url from "url";
function __dirname() {
return path.dirname(url.fileURLToPath(import.meta.url));
}
export default __dirname;
也不起作用,它仍然会返回导出__dirname变量的模块的目录。
我的问题是,如何在不使用__dirname或import.meta.url的情况下获取Node.js中当前模块的目录?
谢谢。
【问题讨论】:
-
你到底想达到什么目的?
-
@AhmedMagdy 我正在尝试获取 Node.js 中当前模块的目录,而不必使用
__dirname或import.meta.url。
标签: javascript node.js dry es6-modules dirname