在我的 Angular 12.0.2 项目上运行“ng build”时出现此错误
./src/polyfills.ts - Error: Module build failed (from ./node_modules/@ngtools/webpack/src/ivy/index.js):
TypeError: The 'compilation' argument must be an instance of Compilation
at getCompilationHooks (D:\Dev\Git_Merc\mercury\node_modules\webpack\lib\javascript\JavascriptModulesPlugin.js:125:10)
at D:\Dev\Git_Merc\mercury\node_modules\webpack\lib\javascript\CommonJsChunkFormatPlugin.js:43:19
at Hook.eval [as call] (eval at create (D:\Dev\Git_Merc\mercury\node_modules\tapable\lib\HookCodeFactory.js:19:10), <anonymous>:7:1)
at Hook.CALL_DELEGATE [as _call] (D:\Dev\Git_Merc\mercury\node_modules\tapable\lib\Hook.js:14:14)
at Compiler.newCompilation (D:\Dev\Git_Merc\mercury\node_modules\@angular-devkit\build-angular\node_modules\webpack\lib\Compiler.js:1030:30)
at D:\Dev\Git_Merc\mercury\node_modules\@angular-devkit\build-angular\node_modules\webpack\lib\Compiler.js:1073:29
at Hook.eval [as callAsync] (eval at create (D:\Dev\Git_Merc\mercury\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:15:1)
at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (D:\Dev\Git_Merc\mercury\node_modules\tapable\lib\Hook.js:18:14)
at Compiler.compile (D:\Dev\Git_Merc\mercury\node_modules\@angular-devkit\build-angular\node_modules\webpack\lib\Compiler.js:1068:28)
at Compiler.runAsChild (D:\Dev\Git_Merc\mercury\node_modules\@angular-devkit\build-angular\node_modules\webpack\lib\Compiler.js:520:8)
Run Code Online (Sandbox Code Playgroud)
我一直在谷歌上搜索,但找不到任何可以解决我的问题的东西。我不确定是什么触发了这个。
版本:
Angular CLI: 12.0.2
Node: 14.17.0
Package Manager: npm 7.14.0
OS: win32 …Run Code Online (Sandbox Code Playgroud) 我在通过 Webpack 的 definePlugin 将 node_env var 注入我的代码时遇到了真正的问题,在阅读了大量帖子后,似乎没有任何效果。我有一种感觉,我错过了一些东西......
所以我的生产 webpack 配置是 -
// Config
import path from 'path';
import webpack from 'webpack';
import config from './config';
/**
* Webpack config for compiling the
* React/Redux/ES6 scripts.
*
* ENV = production
*
* @type {Object}
*/
module.exports = {
entry: path.resolve(__dirname, '../', config.assets.scripts.src_dir, config.assets.scripts.entry),
devtool: false,
output: {
path: path.resolve(__dirname, config.assets.scripts.dist_dir),
filename: config.assets.scripts.dist_min
},
module: {
loaders: [
{
test: /.js?$/,
loader: 'babel-loader?presets[]=react,presets[]=es2015,presets[]=stage-0',
exclude: /node_modules/
},
{
test: /\.json$/,
loader: …Run Code Online (Sandbox Code Playgroud) 我将 Webpack Encore 与Dotenv-webpack一起使用,但收到此错误:
编译失败。
定义插件
“process.env”的值存在冲突
我的 webpack.config.js:
const Dotenv = require('dotenv-webpack')
const Encore = require('@symfony/webpack-encore')
if (!Encore.isRuntimeEnvironmentConfigured()) {
Encore.configureRuntimeEnvironment(process.env.NODE_ENV || 'dev')
}
Encore
// ...
.addPlugin(new Dotenv({
path: './.env.local'
}))
module.exports = Encore.getWebpackConfig();
Run Code Online (Sandbox Code Playgroud)
使用的版本:
"devDependencies": {
"@symfony/webpack-encore": "^1.2.0",
"dotenv-webpack": "^7.0.2",
}
Run Code Online (Sandbox Code Playgroud)
我发现了类似的问题,但我并不真正理解解决方案,因此无法将此解决方案与 Symfony Encore 一起使用。
造成此问题的原因是什么以及如何解决此问题?