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

2024-02-13

我在 Linux 机器上使用 Webpack 4 时遇到问题。构建在开发模式下运行良好,但在生产模式下失败。它似乎也可以在 Windows 机器上运行。我确实尝试将 webpack 降级到旧版本,但什么也没做。

节点js: 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);

包.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'
    }
}

Setting mode to productionWebpack v4 中应该做了足够的优化,因此不需要特别要求 Uglify 插件。尝试删除uglifyjs-webpack-plugin并且也没有必要通过-p标志为build script.

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

const UglifyJsPlugin = require('uglifyjs-webpack-plugin');

module.exports = {
  //...
  optimization: {
    minimizer: [
      new UglifyJsPlugin({ /* your config */ })
    ]
  }
};

最后,我有一个基本的 webpack v4 入门样板,其中包含 Github 上的所有最新生态系统,看一看 https://github.com/bodaz/webpack-4-react看看它是否对你有帮助

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Webpack 4 和 Uglify 插件(TypeError:无法读取未定义的属性“长度”) 的相关文章

随机推荐

  • 有没有办法将 json 对象转换为 json l 文件

    我有一系列对象 我需要将其转换为 jsonl 格式 并使用 lambda 函数中的节点将其作为响应发送 我一直在尝试将其更改为字符串并添加 n 以使其成为新行 但它不起作用 生成 jsonlines 的简单代码 jsonlines 实际上只
  • 如何在一个标头下使用 JNAerator 和多个动态库?

    我正在使用 JNAerator 生成一个可以包含在项目中的单个 jar 文件 并且我希望支持每个操作系统的动态库并将所有内容都归档到这个单个 jar 中 到目前为止 在摆弄 JNAerator 时 我已经能够使用如下命令包含单个动态库 ja
  • Android 注释 REST 设置标头

    我正在使用 Android 注释 最近发现了一个错误Spring Rest 模板使用导致 EOFException https stackoverflow com questions 13182519 spring rest templat
  • 从外部访问WEBrick服务器

    我希望能够从家外的计算机访问我的开发服务器 我尝试过跑步rvmsudo rails server p 80 但是当我尝试使用我的 IP 访问我的计算机时 我进入了路由器的配置页面 有任何想法吗 在这里测试 对我来说是这样的 d 守护进程服务
  • Openshift 端口转发

    已经有很多关于它的话题了 但我被困住了 我配置ssh成功了 现在我想配置端口转发以与 TOAD 连接 我用的是这个 https blog openshift com getting started with port forwarding
  • 如何最好地继承原生 JavaScript 对象? (特别是字符串)

    我是一个长期浏览者 但还是第一次参与者 如果我缺少任何礼仪细节 请告诉我 另外 我到处搜索 包括这个网站 但我还没有找到关于我想要做什么的清晰而简洁的解释 如果我错过了 请为我指出正确的方向 好吧 我想扩展一些原生 JavaScript 对
  • 重大地点变更如何运作?

    谁能确认重大位置变更是如何运作的 当用户移动时 iPhone 的蜂窝接收器从一个蜂窝塔切换到另一个蜂窝塔时 会计算移动吗 移动是通过在 可见 蜂窝塔之间进行三角测量来计算的 以最好地计算用户的位置 移动是根据与desiredAccuracy
  • 从 lsof(Linux 命令行)中提取字段/属性

    随着最近迁移到 Flash 10 或者可能是发行版选择 我和许多其他人不再能够从 tmp 复制 Flash 视频 不过 我在以下方面找到了解决方法 首先 执行 lsof grep Flash 它应该返回如下输出 plugin co 8935
  • 为什么 IE9 放弃了对文件 API 和文件输入的多重属性的支持?

    为什么 IE9 放弃了对文件 API 和文件输入的多重属性的支持 Chrome Firefox 和 Safari 支持这些功能 但 IE9 和 Opera 由于某种未知的原因未能支持这些 对于 IE9 我们似乎仍然坚持使用 Flash 来支
  • F# 实例语法

    F 中的成员声明使用什么指示符 我更喜欢 member a MethodName this是许多字母和x否则使用 我几乎总是使用x作为名字this实例 除了它比其他选项短这一事实之外 这背后没有任何逻辑 我见过的选项是 member x F
  • 在Android中获取html的textarea的值

    我有一个网页加载于WebView 有四个TextAreas存在于网页我在页面加载后填写WebView当我填充它们时 我想得到的值TextAreas点击Next Button在我的 Android 中 下一个按钮在 Android 中而不是在
  • 我可以从 Grails 插件外部控制插件加载顺序吗?

    我想从 Grails 插件外部控制插件加载顺序 在插件中 您可以使用 dependentOn loadAfter 或 loadBefore 控制加载顺序 http grails org doc latest guide plugins ht
  • 在哪里定义模板类的 static const 成员变量

    根据这个问题 https stackoverflow com q 2605520 368599 answer https stackoverflow com questions 2605520 c where to initialize s
  • 将字符串的第一个字节加一

    我有一个main程序 int main char str hello printf s n str Shift first byte 1 to get iello Have tried str 0 gt gt 8 printf s n st
  • 如果我执行 Object a=b 然后 b.change() 也会改变吗?

    如果我有 public class Bike private int speed public void setSpeed int speed this speed speed public int getSpeed return spee
  • newInstance() 与 new

    调用 newInstance 是否会受到惩罚 或者底层的机制是否相同 newInstance 相对于 new 关键字 有多少开销 如果有的话 忽视了 newInstance 暗示使用反射的事实 在现实世界的测试中 通过传递 10 个参数的
  • 如何防止 TabControl 中 UserControl 的延迟加载?

    我刚刚发现 TabControl 中的 UserControls 在选择父 TabPage 之前不会加载 有没有办法防止这种延迟加载 我需要在主窗体加载时初始化用户控件 The TabControl并没有特别对待它的控件 实际上在任何情况下
  • VS2012:调试器启动时 ntdll.dll 中的断点,没有更多信息

    有时 当我使用 VS2012 在调试模式下启动 调试应用程序时 我会看到一个对话框 已触发断点 它不包含其他信息 所以我点击了 break 来看看发生了什么 哦 但是后来我得到 wntdll pdb not returned 并且没有关于该
  • 如何使用 Hive 获取以分钟为单位的日期差异

    下面的查询是我的 sql server 查询 我希望它将其转换为 hive 查询 select DATEDIFF minute 19000101 2013 01 01 10 10 10 你可以使用unix timestamp https c
  • Webpack 4 和 Uglify 插件(TypeError:无法读取未定义的属性“长度”)

    我在 Linux 机器上使用 Webpack 4 时遇到问题 构建在开发模式下运行良好 但在生产模式下失败 它似乎也可以在 Windows 机器上运行 我确实尝试将 webpack 降级到旧版本 但什么也没做 节点js v10 2 1 Ty