webpack.validateSchema不是一个函数

时间:2016-11-14 20:52:03

标签: javascript typescript webpack webpack-dev-server

Webpack突然抛出这个错误:

  

TypeError:webpack.validateSchema不是函数

星期五一切都很好,今天不工作。自星期五以来没有新的提交要掌握。

Pruned NPM,没有用,删除了NPM文件夹并重新安装,没有骰子。检查了以前的分支机构,这些分支机构已经过了一个多星期没有从Master那里重新定位。还是一样。

有人有想法吗?

10 个答案:

答案 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 installnpm update

答案 1 :(得分:10)

我今天几乎与你同时遇到这个问题,结果发现webpack再次更新。

以下是我采取的措施:

首先,我运行了npm installnpm update来查看结果。我运行了这两个命令,因为npm有一种奇怪的方式来报告未满足的依赖项,有时它是错误的,当你重新运行npm updatenpm 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"
  }