我已经安装了最新的webpack和eslint软件包,以便开始使用eslint-loader等。在安装所有内容并放置好配置文件后,在尝试运行Webpack构建时,我开始遇到此错误:
Error: stripComments is not a function
我发现此方法在eslint文件中使用,当查看ESLint npm软件包页面时,我可以看到应该依赖于strip-json-comments
软件包。
https://www.npmjs.com/package/eslint(转到Dependencies,您将看到该dep)
但是,在项目中全新安装eslint
之后,在我的package-lock.json
文件中我没有将此视为依赖项:
"eslint": {
"version": "4.19.1",
"resolved": "https://www.myget.org/F/legacy/npm/eslint/-/eslint-4.19.1.tgz",
"integrity": "sha1-MtHWU+HZBAiFS/spbwdux+GGowA=",
"dev": true,
"requires": {
"ajv": "5.5.2",
"babel-code-frame": "6.26.0",
"chalk": "2.4.1",
"concat-stream": "1.6.2",
"cross-spawn": "5.1.0",
"debug": "3.1.0",
"doctrine": "2.1.0",
"eslint-scope": "3.7.3",
"eslint-visitor-keys": "1.0.0",
"espree": "3.5.4",
"esquery": "1.0.1",
"esutils": "2.0.2",
"file-entry-cache": "2.0.0",
"functional-red-black-tree": "1.0.1",
"glob": "7.1.2",
"globals": "11.7.0",
"ignore": "3.3.10",
"imurmurhash": "0.1.4",
"inquirer": "3.3.0",
"is-resolvable": "1.1.0",
"js-yaml": "3.12.0",
"json-stable-stringify-without-jsonify": "1.0.1",
"levn": "0.3.0",
"lodash": "4.17.10",
"minimatch": "3.0.4",
"mkdirp": "0.5.1",
"natural-compare": "1.4.0",
"optionator": "0.8.2",
"path-is-inside": "1.0.2",
"pluralize": "7.0.0",
"progress": "2.0.0",
"regexpp": "1.1.0",
"require-uncached": "1.0.3",
"semver": "5.5.0",
"strip-ansi": "4.0.0",
// IT SHOULD BE RIGHT HERE! :(
"table": "4.0.2",
"text-table": "0.2.0"
}
npm网站上的所有其他依赖项(请参见上面的链接)都在此列表中,除了strip-json-comments
之外,这完全解释了为什么在运行时找不到该依赖项。
有人知道为什么会这样吗?我尝试搜索这个问题,认为这是他们的错误,但我看不到其他人在谈论这个问题,所以我觉得它在某种程度上影响了我。我发现还有另一个程序包也将其用作依赖项,并且正如我期望的那样,它实际上位于package-lock.json
中。该程序包称为rc
。不确定确切是什么用途,但这是我能找到的唯一对strip-json-comments
的引用。
更新
我发现strip-json-comments
导出的类型是EventEmitter
,这完全可以解释为什么不能像函数一样使用它。一定会发生某种冲突,因为webpack希望在显然不是函数的情况下将此东西用作函数:
此软件包的主文件设置为./lib/npm.js
,如果我查看该文件,则会看到以下内容:
var npm = module.exports = new EventEmitter()
这显然不是函数...发生了什么事:(
更新2
在进一步挖掘之后,可以看到我在运行strip-json-comments
时安装的npm install eslint
的版本实际上是安装NPM包装本身 ...我可以看到此文件的作者及其整个npm
团队。 WTF ... idk发生了什么,但是我认为这可能与MyGet.org上的私有存储库提要有关。
谢谢
答案 0 :(得分:0)
好吧,我发现问题出在MyGet.org本身。我在那里有一个私人供稿,然后将其镜像到npmjs.org。出于某些绝对疯狂的原因,我的私人供稿中的strip-json-comments
软件包已以某种方式损坏,而在npmjs.org端解析的实际软件包是npm
本身。就像您在安装npm
时下载的实际软件包一样,它被用来代替此小注释剥离软件包。我完全不知道这是怎么发生的,但是我只是创建了一个新的提要并重新镜像了程序包,现在一切正常...