.Net Core 2.0 Angular SPA发布报错:Webpack配置不符合API schema
解决VS2017发布.NET Core 2.0 Angular SPA时Webpack配置错误的问题
我之前也踩过这个一模一样的坑!你遇到的问题本质上是全局Webpack版本和项目本地依赖的Webpack版本不兼容导致的——毕竟.NET Core 2.0的Angular模板用的是Webpack 3.x左右的版本,而你本地可能装了更高版本的Webpack全局包,两者的配置API schema差异很大,所以才会报配置无效的错误。下面是我亲测有效的解决步骤:
步骤1:确认版本差异
先检查你全局的Webpack版本和项目本地的版本:
- 打开命令提示符,执行:
webpack -v,这是全局版本 - 打开项目根目录的
package.json文件,找到webpack的依赖版本,一般模板自带的是3.x系列
如果两者版本不一致(比如全局是4.x+),那就是问题根源了。
步骤2:使用项目本地的Webpack执行编译
不要用全局的Webpack命令,改用项目本地依赖的版本,在包管理器控制台里执行:
.\node_modules\.bin\webpack --config ./project1/webpack.config.vendor.js --env.prod
这样就会调用项目里安装的对应版本Webpack,避免版本不匹配带来的配置冲突。
步骤3:修改VS发布配置,强制使用本地Webpack
为了让VS在FTP发布时也用本地Webpack,需要修改项目的.csproj文件:
- 右键项目 → 编辑.csproj
- 找到类似下面的发布命令节点:
<Target Name="PublishRunWebpack" AfterTargets="ComputeFilesToPublish"> <!-- 其他配置 --> <Exec Command="node node_modules/webpack/bin/webpack.js --config webpack.config.vendor.js --env.prod" /> </Target>
- 把
node node_modules/webpack/bin/webpack.js改成$(SolutionDir)node_modules\.bin\webpack.cmd(Windows环境),修改后如下:
<Exec Command="$(SolutionDir)node_modules\.bin\webpack.cmd --config webpack.config.vendor.js --env.prod" />
这样VS发布时就会调用项目本地的Webpack版本,而不是全局的。
额外检查:确认Webpack配置文件的兼容性
如果上面的步骤还没解决,检查你的webpack.config.vendor.js里有没有Webpack高版本的语法,比如:
- Webpack 4.x新增的
mode选项,在3.x里是没有的,如果配置里有mode: 'production',要删掉 - 其他诸如插件配置的语法差异,确保配置文件完全符合项目依赖的Webpack 3.x的API规范
内容的提问来源于stack exchange,提问作者Matthew Flynn
相关产品推荐
相关产品推荐

