我正在使用来自package.json的节点bin对象创建节点命令,但是由于microsoft javascript运行时这些命令无法执行。如何指向节点环境
{
"name": "test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
bin":{
"runMy":"index.js"
},
"author": "",
"license": "ISC"
}
index.js文件有console.log(" Happi")..
我使用npm link命令来"链接"命令全局链接命令。
答案 0 :(得分:1)
您可以尝试一些可以解决问题的方法。我没有Windows来测试它,但这是你可以尝试的:
首先,确保添加一个shebang行作为脚本的第一行:
#!/usr/bin/env node
所以脚本看起来像这样:
#!/usr/bin/env node
console.log("Happi");
请注意,shebang行之前没有空格或任何内容 - “#”哈希字符是文件的第一个字符。
Windows系统不使用该行 - 它在类Unix系统上使用 - 但Node的cmd-shim应该在看到该行时在Windows上安装正确的包装器。
我不确定运行npm link
是否足够或正在运行npm install ...
安装该模块是否需要让cmd-shim生效。
您可以尝试的另一件事是改变:
"runMy": "index.js"
为:
"runMy": "node index.js"
这应该在package.json的“scripts”部分中有效。我不确定这是否适用于“bin”部分。
还有一个wrap-cmd模块,可让您手动包装脚本,请参阅https://www.npmjs.com/package/wrap-cmd
最后,您可以编写自己的.cmd或.bat文件来运行“node your-script.js”。 example.bat文件可能如下所示:
@echo off
node c:\path\to\your_program.js
只要你的PATH中有节点,它就应该有效。