Webpack:导入一个在全局名称空间中具有函数的文件并使它们可用?

ubof19bj  于 2022-12-13  发布在  Webpack
关注(0)|答案(2)|浏览(179)

我尝试使用webpack导入文件,我做我的正常:

import "../../lib/SampleFunctions.js";

在此示例函数中,有许多直接在全局名称空间(即

function CreateItem()
{

};

function CreaturePack(inside)
{

};

// constructor
CreaturePack.prototype = Object.create(CreateItem.prototype);

但问题是CreatePack或CreateItem在全局名称空间中不可用。
我以为我可以修复这个使用暴露插件,也许我用错了..但我做了以下

{test: /SampleFunctions\.js$/, loader: 'expose?CreaturePack'},

我现在有一个CreaturePack,但它是一个空对象,那么CreateItem呢?
我该怎么做呢?我希望能够使用import“.....file”,但在全局范围内创建我的对象。SomeFunctions是一个示例,真实的的文件非常复杂,所以我不能重构它来使用ES6模块。
是否有其他更好的加载器可以将所有内容都放置在全局名称空间中?
我有一些其他文件使用它,并希望这些函数在全局名称空间上。

2wnc66cl

2wnc66cl1#

您需要使用exports-loader,而不是使用expose-loader

yh2wf1be

yh2wf1be2#

@Martin:所以,如果我理解你的需求是正确的话,你希望在你的项目中有一些全局对象[它可能包括Server_Name,Version等],并在你的模块中使用它。
如果是这样,您可以在顶部的Webpack.config.js中导入该公共模块,将其分配给某个本地对象,并将其放在Webpack的externals对象中。

var CommonModule = require('./config');

module.exports = {
........
   externals: {
       'appConfig': JSON.stringify(CommonModule)
   }
........
}

然后,您可以直接跨不同模块全局导入。

import appConfig from 'appConfig';

相关问题