3

我正在尝试使用 webpack 修改当前项目。在我的脚本中,我使用的是 lodash 库,但我也有未在 ES6 上编写的脚本,因此我使用普通脚本标签全局加载 lodash。基于 webpack 文档,我在 webpack ( https://webpack.js.org/configuration/externals/ ) 上添加了以下配置。

lodash : {
        commonjs: 'lodash',
        amd: 'lodash',
        root: '_' // indicates global variable
      },

我使用 babel 编译代码没有任何问题,但是当执行实际代码时,我收到以下错误“TypeError:无法读取未定义的属性 'forEach'”

如果我import _ from "lodash";从文件中删除该语句,则问题已解决,并且脚本按预期工作,因为 _ 在全局上。

但这在不添加外部组件的情况下也可以正常工作吗?根据 jquery 的 webpack 示例

module.exports = {
  //...
  externals: {
    jquery: 'jQuery'
  }
};

以下代码将保持不变

import $ from 'jquery';
$('.my-element').animate(/* ... */);

在我的情况下为什么不工作?有什么建议么 ?想法?

4

1 回答 1

1

我想我找到了解决方案,在我一遍又一遍地阅读文档后,我注意到该消息也在黄色边框上

An object with { root, amd, commonjs, ... } is only allowed for libraryTarget: 'umd'. It's not allowed for other library targets.

所以我改变了我的配置

lodash : {
      commonjs: 'lodash',
      amd: 'lodash',
      root: '_' // indicates global variable
    }

lodash: '_'

问题解决了,现在按预期工作。如果我明白为什么这是一个问题,那当然会很棒

于 2019-05-13T14:46:27.407 回答