我一直在尝试创建将在Node.js窗口上的“命令提示符”中运行的全局命令。不幸的是,所有的教程似乎都是针对Mac/Linux的。这通常不会是一个问题,然而,当我完全遵循它们,只使用不同的目录字符串格式和位置,以便它可以符合Windows,Node.js不能准确地解析链接。
我能够让它工作的唯一方法是在运行"npm链接“并手动调整值之后进入"Windows”文件Node生成的文件。这是可行的,但它似乎不是最好的解决方案。
我使用的“目录标识符”是:
#!C:\用户-我的用户名-\AppData\漫游\npm\“env节点”
生成的Node.js "Windows“(不起作用):
@IF EXIST "%~dp0\C:\Users\-username-\AppData\Roaming\npm\"env.exe" (
  "%~dp0\C:\Users\-username-\AppData\Roaming\npm\"env.exe"  node" "%~dp0\node_modules\Node-Command\Test.js" %*
) ELSE (
  @SETLOCAL
  @SET PATHEXT=%PATHEXT:;.JS;=;%
  C:\Users\-username-\AppData\Roaming\npm\"env  node" "%~dp0\node_modules\Node-Command\Test.js" %*
)手动调整的Node.js "Windows“:
@IF EXIST "%~dp0\node.exe" (
  "%~dp0\node.exe"  "%~dp0\node_modules\Node-Command\Test.js" %*
) ELSE (
  @SETLOCAL
  @SET PATHEXT=%PATHEXT:;.JS;=;%
  node  "%~dp0\node_modules\Node-Command\Test.js" %*
)我得到的错误(来自生成的命令):
@IF EXIST "C:\Users\-username-\AppData\Roaming\npm\\C:\Users\-username-\AppData\Roaming\npm\"env.exe" (发布于 2015-01-24 07:14:43
我不知道什么是正确的防弹方法,但这一种方法在我的开发机器上运行得很好:
在包含test.cmd的文件夹%APPDATA%\npm中创建文件
@node "C:\full\path\to\test.js" %*在我的Windows版本中,%APPDATA%扩展为C:\Users\my_user_name\AppData\Roaming,因此完整的shell脚本名将是C:\Users\my_user_name\AppData\Roaming\npm\test.cmd
@的意思是不要在内部打印cmd脚本
%*意味着将给予test.cmd脚本的所有命令行参数作为process.argv数组中的值传递给test.js脚本。
脚本假设C:\Program Files\nodejs和C:\Users\my_user_name\AppData\Roaming都是由Node添加到全局环境PATH变量中的。
发布于 2017-04-26 05:21:51
我把这个放在我的JS文件的顶部:
#!/usr/bin/env node哪个节点似乎在.cmd文件中正确地转换为这个节点:
"%~dp0\node.exe"https://stackoverflow.com/questions/28101791
复制相似问题