Webpack突然抛出这个错误:
TypeError:webpack.validateSchema不是函数
星期五一切都很好,今天不工作。自星期五以来没有新的提交要掌握。
Pruned NPM,没有用,删除了NPM文件夹并重新安装,没有骰子。检查了以前的分支机构,这些分支机构已经过了一个多星期没有从Master那里重新定位。还是一样。
有人有想法吗?
答案 0 :(得分:31)
看起来像npm bug,因为webpack-dev-server@2.1.0-beta.11
需要webpack@^2.1.0-beta.26
但是npm无法安装它。
避免问题而不更新太多的最简单方法是将package.json中的依赖项更改为
"webpack-dev-server": "2.1.0-beta.10",
而不是像
这样的东西 "webpack-dev-server": "^2.1.0-beta.9",
“^”char之前的版本说“兼容”。删除它完全符合版本。
不要忘记之后运行npm install
或npm update
。
答案 1 :(得分:10)
我今天几乎与你同时遇到这个问题,结果发现webpack再次更新。
以下是我采取的措施:
首先,我运行了npm install
和npm update
来查看结果。我运行了这两个命令,因为npm有一种奇怪的方式来报告未满足的依赖项,有时它是错误的,当你重新运行npm update
或npm install
时,你会发现未满足的依赖项不再是一个问题。
运行这些命令后,我注意到剩下的唯一消息是警告:
npm WARN webpack-dev-server@2.1.0-beta.11 requires a peer of webpack@^2.1.0-beta.26 but none was installed.
为了摆脱这种情况,我将package.json
文件更改为"webpack": "2.1.0-beta.26"
而不是"webpack": "2.1.0-beta.25"
,并运行了另一个npm install
。
在此之后,当我尝试运行npm start
时,我发现另一个错误,该错误表明我的webpack配置文件存在问题。在我的情况下,我去了我的开发环境的webpack配置文件(因为我还没有生产),我发现了一个名为'outputPath'的无效参数的罪魁祸首。
我注意到了这一行,现在我让一切正常。
希望这会有所帮助,现在可能只是一个黑客,但希望这是朝着正确方向迈出的一步。
<强>更新强>
好的,所以我对“工作正常”的一切都有点不对劲。事实证明,我的一些装载机工作不正常; Bootstrap和其他一些东西没有被正确加载,破坏了我的风格。因此,要将其恢复到之前的状态,我删除了node_modules
文件夹并使用npm install
中的以下内容运行package.json
:
"webpack": "2.1.0-beta.25",
"webpack-dashboard": "^0.1.8",
"webpack-dev-middleware": "^1.6.1",
"webpack-dev-server": "2.1.0-beta.9",
"webpack-md5-hash": "^0.0.5",
"webpack-merge": "^0.15.0",
希望像这样的讨论将帮助我们弄清楚如何正式推进新版webpack的发布。
答案 2 :(得分:6)
我也得到了同样的错误。我在我的package.json文件中锁定了我的webpack-dev-server版本,这可以防止错误发生。但这并不能解决bug的根本问题。
这是我正在使用的webpack-dev-server的版本,但我确信以后的版本也能正常工作: “webpack-dev-server”:“2.1.0-beta.9”,
答案 3 :(得分:5)
当我删除^并使用确切的版本时,它对我有用。
来自
"webpack": "2.1.0-beta.25",
"webpack-dev-middleware": "^1.6.1",
"webpack-dev-server": "^2.1.0-beta.9",
"webpack-md5-hash": "^0.0.5",
"webpack-merge": "^0.14.1"
到
"webpack": "2.1.0-beta.25",
"webpack-dev-middleware": "1.6.1",
"webpack-dev-server": "2.1.0-beta.9",
"webpack-md5-hash": "0.0.5",
"webpack-merge": "0.14.1"
答案 4 :(得分:5)
当我这样做时,它对我有用:
卸载以下软件包:
npm卸载webpack webpack-dev-server --save -dev
安装以下软件包:
npm install --save -dev webpack@3.10.0
npm install --save -dev webpack-cli@2.0.10
npm install --save -dev webpack-dev-server@2.9.7
答案 5 :(得分:4)
好的,请在这里更新。
尝试了一些你们的建议,不幸的是,这让我更深入地了解了模块加载器坏了的漏洞。
最后,我更新为"webpack": "^2.1.0-beta.26"
和"webpack-dev-server": "^2.1.0-beta.11"
。之后,发现有重大变化,导致loaders
中断 - https://github.com/webpack/webpack/releases。
简而言之,在您的webpack配置中,将loaders: [ ... ]
更改为rules : [ ... ]
,并在所有加载器声明中添加&#34; -loader&#34;到这个字符串值,
{ test: /node_modules\/i18n-iso-countries\/(de|es|nl|sv)\.js$/, loader: 'null-loader' },
{ test: /\.coffee$/, loader: 'coffee-loader' },
{ test: /\.ts$/, loader: ['awesome-typescript-loader']}
等。
对我来说。希望这有助于其他任何人遇到这个问题。
答案 6 :(得分:1)
我通过运行此命令来实现它:
npm install --save-dev webpack-dev-server@beta webpack@beta
答案 7 :(得分:1)
正如this GitHub issue中所述,您需要将webpack更新为webpack 2.1.0-beta.26
或更高版本。由于上一个v2.1版本是beta.28,因此您需要webpack@^2.1.0-beta.28
。
请注意,beta.26中引入的其中一个重大变化是您需要指定加载器的全名,例如将loader: 'babel'
替换为loader: 'babel-loader'
。
答案 8 :(得分:0)
当我们将angular / cli升级到1.6.3时遇到同样的问题,当我们测试ng -v时,我们得到了webpack的错误。 所以我们碰巧卸载webpack,清理缓存然后再全局安装webpack。 它解决了这个问题
答案 9 :(得分:0)
我遇到了这个问题,因为我安装了一个较旧的全局版本的webpack,这在某种程度上与特定于项目的webpack冲突。
我首先通过运行以下命令卸载了全局(旧)webpack:
npm uninstall webpack -g
然后,我运行了特定于项目的Webpack。在Windows上,webpack.cmd驻留在node_modules.bin \中,但是如果通过npm任务运行webpack,则npm将自动搜索.bin文件夹,因此无需显式指定该路径。
package.json中正在运行的npm运行任务如下:
"scripts": {
"webpack": "webpack -w --config ./config/dev.js --progress"
}