首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何强制webpack用浏览器的方式加载库?

如何强制webpack用浏览器的方式加载库?
EN

Stack Overflow用户
提问于 2019-03-30 03:10:50
回答 1查看 345关注 0票数 0

我正在尝试将使用bower和usemin的遗留项目迁移到webpack 4。对于第一步,我只想创建所有JavaScript代码的捆绑包。为此,我创建了index.js,将所有脚本放在此表单中

代码语言:javascript
复制
window.moment = require('./bower_components/moment/moment.js');
require('imports-loader?define=>false,this=>window!' +
    './bower_components/moment-timezone/builds/moment-timezone-with-data-2010-2020.js');

我对遗留的库使用导入和导出加载器。我的问题是一些试图加载/导入依赖项的库如下所示

代码语言:javascript
复制
(function (root, factory) {
    "use strict";

    /*global define*/
    if (typeof define === 'function' && define.amd) {
        define(['moment'], factory);                 // AMD
    } else if (typeof exports === 'object') {
        module.exports = factory(require('moment')); // Node
    } else {
        factory(root.moment);                        // Browser
    }
}(this, function (moment) {
...
}

当webpack试图加载这样的库时,第二个if子句使true和webpack尝试使用require()语句加载依赖项。

使用imports-loader?define=>false我可以强制库不尝试AMD方法。但是我不知道如何跳过使用require()的方法。我试着使用imports-loader?define=>false,exports=>false,但它不起作用。

可以禁用Node方法吗?例如,将exports设置为false

我也尝试过在webpack的配置中使用resolve.alias: {'libname', 'path/to/lib'}选项。但在某些情况下,这种方式会导致当webpack尝试导入依赖项两次或更多次时,它会破坏代码。

EN

回答 1

Stack Overflow用户

发布于 2019-04-18 23:06:23

您必须将exports设置为false

代码语言:javascript
复制
require('imports-loader?define=>false,exports=>false,this=>window!' +
    './bower_components/moment-timezone/builds/moment-timezone-with-data-2010-2020.js');

这应该会使typeof exports === 'object'条件为假。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55424130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档