【发布时间】:2021-05-05 00:07:36
【问题描述】:
问题
NPM $npm_package_main 变量始终为空。
- 当我用
"main": "index.js"设置package.json 文件时 - 将脚本中的“start”属性设置为
"start": "node $npm_package_main" - 然后运行
npm start
问题:CLI 执行 Node REPL 模式,忽略 package.json 中的“main”变量。
预期行为:以node index.js 执行命令。
环境
- Linux Ubuntu 20.04.1
-
npm -v= 7.3.0 -
node -v= v15.5.0 -
npm run env | grep npm_package_name=npm_package_name=app -
npm run env | grep npm_package_main= 空
如何重现
- 创建“app”目录并进入新目录
- 创建一个包含以下内容的“index.js”文件
console.log('HELLO'); - 运行
npm init并按 ENTER 回答所有问题 - 编辑
package.json文件并将以下行添加到“脚本”属性:"start": "node $npm_package_main", - 现在您的 package.json 必须如下所示
{
"name": "app",
"version": "1.0.0",
"description": "",
"main": "index.js",
"devDependencies": {},
"scripts": {
"start": "node $npm_package_main",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
- 运行“npm start”
- 文件“index.js”未执行,Node进入REPL模式。
尝试
设置“start”并运行“npm start”:
- "echo $npm_package_main" 不打印任何内容
- “echo $npm_package_name”打印“app”
- “echo $npm_package_version”打印“1.0.0”
参考
- NPM package.json 变量:https://docs.npmjs.com/cli/v7/using-npm/scripts
- NPM Github 问题:https://github.com/npm/cli/issues/2585
【问题讨论】:
-
是的,你可以设置 "start": "node index.js" 并且它可以工作,但是 "$npm_package_main" 不工作。这就是重点。
标签: javascript node.js variables npm package.json