全局安装的NodeJS npm模块不会使用节点执行main / bin JavaScript文件

时间:2013-11-27 15:57:34

标签: javascript windows node.js npm

我有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 会在默认{{1}的 AppData 文件夹中创建一个.cmd文件按预期方式进行全局安装的位置。

但生成的代码不包含node_modulesnode.exe

node

...所以当我尝试在CMD,PowerShell等中执行我的"%~dp0\node_modules\some-module\bin\some-module.js" %* 模块时,它是使用Windows脚本宿主(WSH)执行的。

出于这个原因,我认为比较一些像YUIDocJS这样的现有模块的some-module就足以找出造成这个问题的原因但是我无法弄清楚我自己的package.json有什么问题所以它没有不要创建预期的全局安装。

提前感谢您的努力。

1 个答案:

答案 0 :(得分:2)

#!/usr/bin/env node的{​​{1}}媒体资源中引用的文件顶部是否有bin?即使shebang是* nix特定指令,package.json depends on its presence to create the shim for the .cmd