全局安装的NodeJS npm模块不执行节点的主/bin JavaScript文件

Globally-installed NodeJS npm module does not execute the main/bin JavaScript file with node

本文关键字:bin JavaScript 文件 节点 NodeJS 安装 npm 模块 全局 执行      更新时间:2023-12-02

我有一个package.json,如下所示:

{
  "name": "some-module",
  "version": "1.0.0",
  "bin": "./bin/some-module.js",
  "main": "./bin/some-module.js",
  "description": "Some module description",
  "homepage": "http://my.home.page.com",
  "author": {
    "name": "Matias Fidemraizer",
    "email": "no-email@no-email.com",
    "url": "http://some.url.com"
  },
  "engines": {
    "node": ">=0.4.0"
  },
  "keywords": [
     "somekeyword"
  ],
  "license": {
    "type": "Apache v2",
    "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
  },
  "preferGlobal": true,
  "repository": {
    "type": "git",
    "url": "git://github.com/some/repo"
  },
  "dependencies": {
     "somedependency": "*"
  }
}

当我尝试安装键入npm -g install /path/to/module/folder的整个模块时,npm会在默认node_modules位置的AppData文件夹中创建一个.cmd文件,以便按预期进行全局安装。

但生成的代码不包括node.exenode:

"%~dp0'node_modules'some-module'bin'some-module.js"   %*

因此,当我尝试在CMD、PowerShell或其他什么中执行some-module模块时,它是使用Windows脚本主机(WSH)执行的。

出于这个原因,我认为比较一些现有模块(如YUIDocJS)的package.json就足以找出导致这个问题的原因,但我无法找出我自己的package.json中出了什么问题,因此它无法创建预期的全局安装。

提前感谢您的努力。

您的package.jsonbin属性中引用的文件顶部是否有shebang #!/usr/bin/env node?即使shebang是一个特定于*nix的指令,npm也取决于它的存在来为.cmd 创建填充程序