Webpack 突然报错:
TypeError: webpack.validateSchema 不是一个函数
上周五还好好的,今天突然就不行了。自上周五以来没有对主分支进行新提交。
尝试了清除npm缓存,不起作用,删除npm文件夹并重新安装,也不行。检查了前一周未从主分支rebase的先前分支,仍旧是同样的错误。
有人有思路吗?
Webpack 突然报错:
TypeError: webpack.validateSchema 不是一个函数
上周五还好好的,今天突然就不行了。自上周五以来没有对主分支进行新提交。
尝试了清除npm缓存,不起作用,删除npm文件夹并重新安装,也不行。检查了前一周未从主分支rebase的先前分支,仍旧是同样的错误。
有人有思路吗?
看起来像是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",
"^"字符在版本号前表示“兼容性版本”,去掉它则精确匹配指定版本。
不要忘记在运行完命令后运行npm install
或npm update
。
"webpack-dev-server": "^3.11.2"
改为
"webpack-dev-server": "3.11.2"
就可以了。 - Scott今天我也遇到了这个问题,最终发现是 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' 的无效参数。
我注释掉了那一行,现在一切都运行良好了。
希望这能帮到你。也许现在只是一个 hack,但希望它是迈向正确方向的一步。
更新:
好的,关于一切“正常运行”这个说法,我有点错了。事实证明我的一些加载器不正常工作;Bootstrap 和一些其他东西并没有被正确地加载进来,破坏了我的样式。所以,为了回到之前的状态,我删除了我的 node_modules
文件夹,并使用以下 package.json
命令运行了 npm install
:
"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的新版本。
我也遇到了同样的错误。我在package.json文件中锁定了我的webpack-dev-server版本,以防止错误发生。但这并不能解决根本问题。
这是我正在使用的webpack-dev-server版本,但我相信更新版本也可以工作: "webpack-dev-server": "2.1.0-beta.9",
package.json
文件中有 "webpack": "2.1.0-beta.25"
,我尝试运行 npm install
和 npm update
。之后我得到了这个警告:npm WARN webpack-dev-server@2.1.0-beta.11 requires a peer of webpack@^2.1.0-beta.26 but none was installed.
- Moose当我执行以下操作时,它对我起了作用:
卸载以下软件包:
npm uninstall 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
--save -dev
不应该被分开写成 --save-dev
. - Borjovsky当我删除^并使用确切的版本时,它对我有用。
来自
"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"
to
"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-dev-server": "^3.11.2"
改为
"webpack-dev-server": "3.11.2"
就可以了。 - Scott好的,更新在这里。
尝试了你们其中一些提出的建议,但不幸地陷入了更深的错误模块加载器破裂的兔子洞中。
最终,我更新到 "webpack": "^2.1.0-beta.26"
和 "webpack-dev-server": "^2.1.0-beta.11"
。在此之后,发现有重大更改,导致 loaders
破裂 - https://github.com/webpack/webpack/releases。
简而言之,在 webpack 配置中将 loaders: [ ... ]
改为 rules : [ ... ]
,并且在所有加载器声明上附加 "-loader" 到字符串值作为这样的内容,{ 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']}
等等。
对我来说有效。希望这能帮助任何遇到该问题的人。
如这个GitHub问题所解释的,您需要将webpack更新到webpack 2.1.0-beta.26
或更高版本。由于最后一个v2.1版本是beta.28,您应该使用webpack@^2.1.0-beta.28
。
请注意,beta.26中引入的一个重大变化是您需要指定加载程序的全名,例如使用loader: 'babel-loader'
来替换loader: 'babel'
。
我通过运行这个命令使它工作:
npm install --save-dev webpack-dev-server@beta webpack@beta
当我们将angular/cli升级到1.6.3时,遇到了相同的问题,当我们测试ng -v时,会出现与webpack相关的错误。 因此,我们不得不卸载webpack,进行缓存清理,然后再次全局安装webpack。 这解决了问题。
npm install
,然后执行npm update
。这对我有效。
npm update
之后! - Moose