当我尝试直接在 package.json 文件中执行脚本时,nodejs __dirname 是一个点
nodejs __dirname is a dot when I try to execute a script directly in package.json file
这是我的 package.json 文件的一部分:
{
...
"scripts": {
"run-test": "node -e 'require(`my-test-lib`).whichPath(__dirname )'",
},
...
}
当我将函数参数读入 'test' 脚本时,它是一个简单的点 .
:-s
我以为__dirname
总是绝对的,但事实并非如此...
我暂时使用了 process.cwd()
,但我很好奇为什么这不起作用。你有线索吗?
在搜索时,我发现 this question 与主题相关,我发现相关,但没有答案。
__dirname
根据在哪个文件中调用它而具有不同的值,而。
@laggingreflex 在评论中提到:"The docs describe __dirname
to be "当前模块的目录名称”。由于您使用 -e 标志来执行代码,实际上没有加载任何模块,所以它是有道理的不要期待它的实际路径
process.cwd()
始终returns相同的值,这是您启动 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
*/
这是我的 package.json 文件的一部分:
{
...
"scripts": {
"run-test": "node -e 'require(`my-test-lib`).whichPath(__dirname )'",
},
...
}
当我将函数参数读入 'test' 脚本时,它是一个简单的点 .
:-s
我以为__dirname
总是绝对的,但事实并非如此...
我暂时使用了 process.cwd()
,但我很好奇为什么这不起作用。你有线索吗?
在搜索时,我发现 this question 与主题相关,我发现相关,但没有答案。
__dirname
根据在哪个文件中调用它而具有不同的值,而。
@laggingreflex 在评论中提到:"The docs describe __dirname
to be "当前模块的目录名称”。由于您使用 -e 标志来执行代码,实际上没有加载任何模块,所以它是有道理的不要期待它的实际路径
process.cwd()
始终returns相同的值,这是您启动 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
*/