当前位置: 首页 > 面试题库 >

cygwin / windows下的NPM脚本:命令的语法不正确

谷梁永年
2023-03-14
问题内容

我在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在正在从其调用的终端环境中运行脚本?


问题答案:

该脚本始终在默认的Windows Shell中运行,而不是在cygwin中运行。

如果您希望它在bash中运行,则将其放入package.json

"scripts": {
    "test": "bash test.sh"
},

并放在test.sh

#!/bin/bash
mkdir mydir/mysubdir

或者,如csvan在评论中指出的,您可以使用Node脚本而不是Shell脚本:

"scripts": {
    "test": "node test.js"
},

这种方法对于跨平台兼容性甚至更好。



 类似资料:
  • 尝试使用Visual Studio Code上的npm start命令运行节点应用程序时收到此错误。非常感谢任何帮助! 这是我包裹里的东西。json文件: 这是我运行代码时终端上的消息:

  • 问题内容: Cucumber.js提供了一个命令行“二进制”,它是一个包含 shebang 指令的简单文件: 二进制文件是使用配置密钥指定的: 这一切在POSIX系统上都能很好地工作。在Windows上运行Cucumber.js时,有人报告了一个问题。 基本上,该文件似乎是通过Windows的JScript解释器(不是Node.js)执行的,并且由于shebang指令而引发语法错误。 我的问题是:

  • 我已经通过google尝试了所有可能的解决方案,但仍然不起作用。我没有从hadoop-env.sh和bin/java中得到这个命令not found错误是什么, 导出java_home=c://java/jre6 下面是我的错误 -bash-4.1$bin/Hadoop namenode-格式 /usr/local/hadoop-1.2.1/libexec/../conf/hadoop-env.s

  • 我在这个Batch脚本中有一个语法错误,但我不知道它是从哪里来的。我是批处理新手,所以我很难弄清楚这一点。我感觉这与语句有关,但我不确定。 我得到的当前错误是: 该命令的语法不正确。

  • 我的的部分当前如下所示: ...这意味着我可以运行来启动服务器。到目前为止还不错。 但是,我希望能够运行类似的东西,并将参数传递给(例如,=>)。这可能吗?

  • 我有一堆shell脚本,以前是在Linux机器上运行的。现在,我们已经切换到Windows,我需要在那里运行这些脚本。我已经安装了Cygwin,但是有没有一种方法可以让脚本使用Cygwin运行,但是调用是从Windows批处理中进行的呢?