【问题标题】:NPM npm_package_main variable is always emptyNPM npm_package_main 变量始终为空
【发布时间】:2021-05-05 00:07:36
【问题描述】:

问题

NPM $npm_package_main 变量始终为空。

  1. 当我用"main": "index.js" 设置package.json 文件时
  2. 将脚本中的“start”属性设置为"start": "node $npm_package_main"
  3. 然后运行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”

参考

【问题讨论】:

  • 是的,你可以设置 "start": "node index.js" 并且它可以工作,但是 "$npm_package_main" 不工作。这就是重点。

标签: javascript node.js variables npm package.json


【解决方案1】:

解决方案

  • 改用“config”属性:
{
  "name": "app",
  "version": "1.0.0",
  "description": "",
  "devDependencies": {},
  "config": {
    "main": "index.js"
  },    
  "scripts": {
    "start": "node $npm_package_config_main",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}
  • 运行“npm start”
  • 有效

参考资料:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    相关资源
    最近更新 更多