我如何使用webpack从控制台上require()?

JavaScript Webpack

十三

2020-03-24

我如何require()/从控制台导入模块?例如,假设我已经安装了ImmutableJS npm,那么我希望能够在控制台中使用模块中的功能。

第3556篇《我如何使用webpack从控制台上require()?》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

4个回答
神乐 2020.03.24

既为此制作了自己的npm包(请参阅此处),又找到了现有的npm包(参阅此处)之后,我还找到了一种方法,只需使用内置的webpack函数就可以单行完成。

它使用WebPack“上下文”:https : //webpack.github.io/docs/context.html

只需将以下行直接添加到“源”文件夹中的文件中即可:

window.Require = require.context("./", true, /\.js$/);

现在您可以使用它(例如在控制台中),如下所示:

let MyComponent = Require("./Path/To/MyComponent");
console.log("Retrieved MyComponent: " + MyComponent);

但是,与上述两个解决方案相比,此方法的一个重要缺点是它似乎不适用于node_modules文件夹中的文件。当路径调整为“ ../”时,webpack无法编译-至少在我的项目中。(也许是因为node_modules文件夹是如此之大)

神乐 2020.03.24

将以下代码添加到您的模块之一,即可按ID加载模块。

window.require = __webpack_require__;

在控制台中,使用以下命令:

require(34)
路易Stafan 2020.03.24

在我看来,暴露加载器是一种更优雅的解决方案:

require("expose-loader?libraryName!./file.js");
// Exposes the exports for file.js to the global context on property "libraryName".
// In web browsers, window.libraryName is then available.
卡卡西小哥 2020.03.24

您可以通过将以下代码添加到捆绑软件中的某个模块来执行与psimyn建议的类似的操作

require.ensure([], function () {
    window.require = function (module) {
        return require(module);
    };
});

从控制台使用require:

require("./app").doSomething();

查看更多

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android