Ich habe Probleme mit Webpack 4 auf einem Linux-Computer. Der Build funktioniert gut im dev-Modus, schlägt aber in der Produktion fehl. Es scheint auch auf einer Windows-Maschine zu arbeiten. Ich habe versucht, ein Webpack auf eine ältere Version herunterzufahren und nichts.
Nodejs: V10.2.1
*TypeError: Cannot read property 'length' of undefined* at node_modules/uglifyjs-webpack-plugin/dist/uglify/index.js:59
this.workers = workers === true ? _os2.default.cpus().length - 1 : Math.min(Number(workers) || 0, _os2.default.cpus().length - 1);
packge.json
{
"name": "webpack-demo",
"version": "1.0.0",
"license": "MIT",
"scripts": {
"build": "webpack -p"
},
"devDependencies": {},
"dependencies": {
"@types/node": "^10.5.1",
"css-loader": "^0.28.11",
"global": "^4.3.2",
"node-sass": "^4.9.1",
"npm": "^6.1.0",
"sass-loader": "^7.0.3",
"style-loader": "^0.21.0",
"ts-loader": "^4.4.2",
"TypeScript": "^2.9.2",
"uglifyjs-webpack-plugin": "1.0.0-beta.2",
"webpack": "^4.15.1",
"webpack-cli": "^3.0.8"
}
}
webpack.config.js
const path = require('path');
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
var webpack = require('webpack');
module.exports = {
entry: './src/index.ts',
devtool: 'source-map',
mode: 'production',
module: {
rules: [{
test: /\.tsx?$/,
use: 'ts-loader',
exclude: /node_modules/
},
{
test: /\.scss$/,
use: ['style-loader', 'css-loader', 'sass-loader'],
exclude: /node_modules/
}
],
},
resolve: {
extensions: ['.tsx', '.ts', '.js','.css','.scss']
},
plugins: [
new UglifyJsPlugin()
],
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'main.js'
}
}
Wenn Sie mode
auf production
in Webpack v4 setzen, sollten Sie genügend Optimierungen vornehmen, sodass Sie nicht unbedingt das Uglify-Plugin benötigen. Versuchen Sie, uglifyjs-webpack-plugin
zu entfernen, und es ist auch nicht erforderlich, das -p
-Flag für das build
-Skript zu übergeben.
Wenn Sie das Uglify-Plugin anpassen möchten, können Sie dies auch in der optimization
config von Webpack tun, siehe https://webpack.js.org/configuration/optimization/
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
module.exports = {
//...
optimization: {
minimizer: [
new UglifyJsPlugin({ /* your config */ })
]
}
};
Zum Schluss habe ich noch eine grundlegende Starter-Plattform für das Webpack v4 mit dem neuesten Ökosystem auf Github, schauen Sie nach und sehen Sie, ob es Ihnen helfen wird oder nicht
Ich konnte es funktionieren lassen, indem ich einfach die Uplify-Funktion von der Produktionsversion aus deaktivierte.
module.exports = {
optimization:{
minimize: false, // <---- disables uglify.
// minimizer: [new UglifyJsPlugin()] <----- if you want to customize it.
}
}