Webpack 4和Uglify插件(TypeError:无法读取未定义的属性“ length”)

时间:2018-07-09 10:22:24

标签: javascript node.js webpack yarnpkg webpack-plugin

我在Linux机器上使用Webpack 4遇到问题。该构建可以在开发人员模式下正常运行,但无法投入生产。它似乎也可以在Windows计算机上运行。我确实尝试将webpack降级到较旧的版本,什么也没做。

Nodejs: v10.2.1

<PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
    <TypeScriptToolsVersion>Latest</TypeScriptToolsVersion>
    <IsPackable>false</IsPackable>
    <Version>2.2.0</Version>
    <PackagesRoot>..\</PackagesRoot>
    <SpaRoot>Angular\</SpaRoot>
    <WWWRoot>wwwroot\</WWWRoot>
    <!-- Hides dist folders in wwwroot! -->
    <DefaultItemExcludes>$(DefaultItemExcludes);$(WWWRoot)dist*\**</DefaultItemExcludes>
</PropertyGroup>

packge.json

 *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);

webpack.config.js

{
  "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"
  }
}

2 个答案:

答案 0 :(得分:6)

在Webpack v4中将import numpy as np import pandas as pd import datetime as dt ts = pd.Series([1,0,0,0,1], name = 'num', index = pd.date_range('2018-04-11 07:55:00', periods=5, freq='min')).rename_axis('_time') # NORMALIZE AND THEN ADD 1 DAY midnight = pd.Series([np.nan], name = 'num', index = [max(ts.index).normalize() + dt.timedelta(days=1)]).rename_axis('_time') # CONCATENATE BOTH SERIES AND THEN RESAMPLE final_ts = pd.concat([ts, midnight]).resample('min').sum().fillna(0) print(final_ts.head()) # _time # 2018-04-11 07:55:00 1.0 # 2018-04-11 07:56:00 0.0 # 2018-04-11 07:57:00 0.0 # 2018-04-11 07:58:00 0.0 # 2018-04-11 07:59:00 1.0 # Freq: T, Name: num, dtype: float64 print(final_ts.tail()) # _time # 2018-04-11 23:56:00 0.0 # 2018-04-11 23:57:00 0.0 # 2018-04-11 23:58:00 0.0 # 2018-04-11 23:59:00 0.0 # 2018-04-12 00:00:00 0.0 # Freq: T, Name: num, dtype: float64 设置为mode应该可以进行足够的优化,因此无需专门要求使用Uglify插件。尝试删除production,也不需要为uglifyjs-webpack-plugin脚本传递-p标志。

如果您想自定义Uglify插件,也可以在Webpack的build配置中进行,请参见https://webpack.js.org/configuration/optimization/

optimization

最后,我有一个基本的webpack v4入门模板,其中包含Github上所有最新的生态系统,take a look,看它是否对您有帮助

答案 1 :(得分:2)

我仅通过在生产环境中禁用uglify就能使其工作。

module.exports = {
    optimization:{
        minimize: false, // <---- disables uglify.
        // minimizer: [new UglifyJsPlugin()] <----- if you want to customize it.
    }
}