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

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

神乐2020/03/24 17:26:34

既为此制作了自己的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 17:26:34

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

window.require = __webpack_require__;

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

require(34)
路易Stafan2020/03/24 17:26:34

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

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 17:26:34

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

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

从控制台使用require:

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

查看更多