【发布时间】:2017-06-25 18:08:06
【问题描述】:
我在 Windows 7 机器上运行 Node 6.9.5 和 NPM 3.10.10。我的终端是 Cygwin 2.877。
如果我尝试在 Cygwin 中运行以下命令,它可以正常工作:
mkdir mydir/mysubdir;
但是,如果我将其放入 package.json 文件中,例如:
"scripts": {
"test": "mkdir mydir/mysubdir"
},
然后运行:
npm run test
它失败了:
The syntax of the command is incorrect.
谷歌搜索后,这似乎是一个 Windows 命令提示符错误,而不是 Cygwin 错误。因此,NPM 似乎正在尝试使用命令提示符而不是现有的 Cygwin 环境来运行脚本。
我该如何解决这个问题?或者更确切地说,如何确保 NPM 在调用它的终端环境中运行脚本?
【问题讨论】:
-
您使用的是 Win32 还是 Cygwin 版本的 NPM?一般来说,如果您打算与 Cygwin 工具或文件系统的 Cygwin 视图交互,则需要 cygwin 构建。
-
@cnettel 我正在使用 win32 构建。将查看使用 Cygwin 构建是否会改变任何内容。有没有办法强制 npm 使用给定的 shell 环境?
-
原来没有:github.com/npm/npm/issues/6543。 Windows 上的环境总是
cmd.exe。推荐的方法是编写节点脚本并运行它们,我可能会走这条路。 -
就像一个注释一样,您有时可以通过在 (Windows) PATH 中添加 Cygwin 二进制文件来获得更好的 Cygwin 类行为。在我想使用 Win32 Python 或 Perl 的情况下,我也做了同样的事情,但我还需要一些 cygwin 工具。从 cmd 提示符启动的单个 Cygwin 二进制文件通常会表现得很好。主要问题是调用进程仍然不会有相同的文件系统视图。高级管道和环境变量的修改也不起作用,但只需调用特定的外部工具,就可以了。在这种情况下没有多大意义。
标签: node.js windows npm cygwin