尝试在Windows上从package.json执行脚本会引发JScript错误

时间:2016-05-12 16:24:15

标签: javascript json node.js windows npm

所以我正在尝试构建javascriptair / site。在package.json内部有一个指向javascript“command”package-scripts的npm脚本。找到该存储库https://github.com/kentcdodds/p-s。在Windows中,它出现JScript错误。

Script: C:[path_to_code]\package-scripts.js
Line: 2
Char: 1
Error: Syntax error
Code: 800A03EA
Source: Microsoft JScript compilation error

所以在package.json中,它有什么是

"scripts": {
    "start": "package-scripts"
}

如果我将package.json更改为以下内容:

"scripts": {
    "start": "package-scripts.cmd"
}

我可以让服务器启动。所以我的问题是,为什么会发生这种情况,我们如何更改package.json以使其与相同的命令交叉平台。

2 个答案:

答案 0 :(得分:0)

这是一个Node.js模块,由另一个脚本构成require d。它不是由Microsoft JScript执行的,如果您尝试在Node中单独运行脚本文件,它将不会执行任何操作。这是因为这个特定脚本的所有内部方法都应该在使用前暴露在外部。

进一步检查后,您可能正在寻找的实际文件似乎位于bin文件夹中。使用node命令运行它,看看会发生什么。

答案 1 :(得分:0)

此处指出了原因和解决方法:https://github.com/javascriptair/site/issues/98#issuecomment-404420108

  

所以问题是repo的根目录中有一个js文件,其基本名称与二进制文件相同。 Windows上的npm首先尝试将其作为二进制文件运行,而不是查找'./node_modules/.bin'   因此,要解决此问题,只需从.JS环境变量中删除PATHEXT并重新启动

我遇到了同样的问题:当包的根目录中有tslint.js个文件,而package.json中的一个npm脚本只调用tslint时,npm将触发jscript而不是节点,从而导致弹出“ Microsoft JScript编译错误”。从.js中删除PATHEXT有帮助。