gpt4 book ai didi

webpack - 当需要从属关系时,Lodash 意外地将自身注入(inject)到全局中

转载 作者:行者123 更新时间:2023-12-02 13:29:04 24 4
gpt4 key购买 nike

我的应用程序依赖于库 foolib,库 foolib 依赖于 lodash,并通过 var _ = require('lodash') 需要它

要求 foolib 会导致 lodash 将自身附加到窗口

我发现这是由于:

https://github.com/lodash/lodash/blob/45785a282442399cfca829aea496104003f773e2/dist/lodash.js#L17041-L17046

  // Some AMD build optimizers, like r.js, check for condition patterns like:
if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {
// Expose Lodash on the global object to prevent errors when Lodash is
// loaded by a script tag in the presence of an AMD loader.
// See http://requirejs.org/docs/errors.html#mismatch for more details.
// Use `_.noConflict` to remove Lodash from the global object.
root._ = _;

将调试器添加到条件正文中会导致调试器触发,但导致进入 if 分支的条件现在返回 false

在调试器之前添加控制台日志以注销 define 的值,显示它是由 webpack:///(webpack)/buildin/amd-define.js 定义的? 0bba 的内容为

module.exports = function() { throw new Error("define cannot be used indirect"); };



/*****************
** WEBPACK FOOTER
** (webpack)/buildin/amd-define.js
** module id = 875
** module chunks = 2
**/

由于我使用 webpack 进行构建,因此 definedefine.amd 的条件为 true 似乎出乎意料

最佳答案

找到解决方案:
https://github.com/webpack/webpack/issues/138#issuecomment-160638284

module: {
noParse: /node_modules\/lodash\/lodash\.js/,
}

将其添加到 webpack 配置中,问题已解决

关于webpack - 当需要从属关系时,Lodash 意外地将自身注入(inject)到全局中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40981230/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com