"bin"应该改为"cucumber",npm会创建一个指向"node %SCRIPTNAME%"的文件,名字是"cucumber"或者"cucumber.cmd"。前者适用于posix环境,后者适用于Windows环境...如果你希望"js"作为可执行文件名的一部分...你应该使用连字符... "cucumber-js"。在你的情况下,.js文件会在.js.cmd之前运行,导致WScript解释器将其视为JScript文件而不是Node脚本。
我建议查看coffee-script的package.json文件,这是一个很好的例子。
{
"name": "coffee-script",
"description": "Unfancy JavaScript",
"keywords": ["javascript", "language", "coffeescript", "compiler"],
"author": "Jeremy Ashkenas",
"version": "1.4.0",
"licenses": [{
"type": "MIT",
"url": "https://raw.github.com/jashkenas/coffee-script/master/LICENSE"
}],
"engines": {
"node": ">=0.4.0"
},
"directories" : {
"lib" : "./lib/coffee-script"
},
"main" : "./lib/coffee-script/coffee-script",
"bin": {
"coffee": "./bin/coffee",
"cake": "./bin/cake"
},
"scripts": {
"test": "node ./bin/cake test"
},
"homepage": "http://coffeescript.org",
"bugs": "https://github.com/jashkenas/coffee-script/issues",
"repository": {
"type": "git",
"url": "git://github.com/jashkenas/coffee-script.git"
},
"devDependencies": {
"uglify-js": ">=1.0.0",
"jison": ">=0.2.0"
}
}
cucumber.js
和一个针对Windows友好的cucumber.js.cmd
二进制文件。由于Windows处理文件“扩展名”的方式,当输入node_modules\.bin\cucumber.js
时,它会将“.js”文件通过JScript运行,而不是.cmd
文件。感谢这个苛刻的附言 ;) - jbprosnode ./index.js
也无法使其工作。更正:重新执行npm link
似乎可以解决问题。 - Joel HarkesENOENT: no such file or directory, chmod 'C:\Users\<user>\AppData\Roaming\npm\node_modules\<module>\node .\index.js'
。在 package.json 文件中,有如下代码:"bin": { "<module>": "node ./index.js"}
你是怎么解决这个问题的? - YoyoS#!/usr/bin/env node
,即使是在Windows上也可以工作。 - YoyoS