node.js - 当我尝试直接在 package.json 文件中执行脚本时,nodejs __dirname 是一个点
问题描述
这是我的 package.json 文件的一部分:
{
...
"scripts": {
"run-test": "node -e 'require(`my-test-lib`).whichPath(__dirname )'",
},
...
}
当我将函数参数读入“测试”脚本时,它是一个简单的点.
:-s
我一直以为那__dirname
是绝对的,但事实并非如此......
我process.cwd()
暂时使用过,但我很好奇为什么这不起作用。你有线索吗?
在搜索时,我发现了这个与主题相关的问题并且我发现相关,但它没有答案。
解决方案
__目录名
根据在哪个文件中调用它具有不同的值,而。
@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
*/
推荐阅读
- javascript - Array in Vue Plugin is not reactive
- broadcast - 等待从集群接收初始广播超时 - ActiveMQ artemis 独立
- pandas - 如何在数据框的列中删除一个特定的重复命名列?
- javascript - Firebase 参数太多。运行 firebase help emulators:start 以获取使用说明
- ios - iOS 中开头的省略号/换行 NavigationController 标题
- maven - 在单个 docker run 命令中运行 2 个构建命令
- javascript - ng-bootstrap 工具提示未显示在右侧位置
- excel - PageSetup.PrintArea 无法按预期工作
- javascript - supertest 在每次测试中更改 url
- c# - 在pdf文件中隐藏datagridview中的列