首页 > 解决方案 > 当我尝试直接在 package.json 文件中执行脚本时,nodejs __dirname 是一个点

问题描述

这是我的 package.json 文件的一部分:

{
    ...
    "scripts": {
        "run-test": "node -e 'require(`my-test-lib`).whichPath(__dirname )'",
    },
    ...
}

当我将函数参数读入“测试”脚本时,它是一个简单的点.:-s

我一直以为那__dirname是绝对的,但事实并非如此......

process.cwd()暂时使用过,但我很好奇为什么这不起作用。你有线索吗?

在搜索时,我发现了这个与主题相关的问题并且我发现相关,但它没有答案。

标签: node.jspackage.jsonnpm-scripts

解决方案


__目录名

根据在哪个文件中调用它具有不同的值,而。

@laggingreflex 在评论中提到:“文档描述__dirname为“当前模块的目录名称”。由于您使用 -e 标志来执行代码,因此实际上没有加载任何模块,所以不要期望是有意义的一条真正的路径”

进程.cwd()

总是返回相同的值,这是您启动 Node.js 进程的绝对路径(例如,$ node index.js)。

console.log(__dirname); // /project
console.log(process.cwd()); // /project

const test = require('./module');

/* module code

console.log(__dirname); /project/module
console.log(process.cwd()); /project

*/

推荐阅读