我需要在运行时动态设置一个配置选项,这样服务器就可以决定选项。目前我有:
source.js
const config = {"option1: "lindsay", "option2": "lohan"};
const myObject = myApp(config);
字符串
webpack.config.js
module.exports = [{
entry: {
"myfile": "./assets/js/source.js",
},
output: {
path: __dirname + "/js/",
library: {
name: "myLibrary",
type: "var",
}
},
mode: "production"
}]
型
这将成功构建一个模块,我可以通过myLibrary.myFunction()
调用它
但是,如果我将配置更改为在运行时加载;
source.js
const response = await fetch('./config.json');
const config = await response.json();
const myObject = myApp(config);
型
然后在构建时以某种方式进行了不同的解释(显示了更多的输出),当部署时,它现在是一个promise,因此我必须使用以下内容启动它:
random.js**
myLibrary.then((foo) => { foo.myFunction(); });
型
有没有什么方法可以避免这种情况,使await
命令在构建时被忽略或延迟,以便只在部署的环境中调用它们。
我玩过externals
,但这似乎与import
s等有关,我不需要忽略。
Webpack并没有出错,因为它构建得很好,它只是构建了一些我没有预料到的东西。
版本号
我正在使用:
webpack --version
Binaries:
Node: 18.13.0 - /usr/bin/node
npm: 9.2.0 - /usr/bin/npm
Packages:
webpack: ^5.88.2 => 5.88.2
webpack-cli: ^5.1.4 => 5.1.4
型
1条答案
按热度按时间siv3szwd1#
如果
source.js
在顶层有await,它将返回一个promise。我认为你应该改变初始化配置的方式。例如,你可以删除作为myApp参数的config,并单独初始化它:
字符串
当然,最初“myObject”在被获取之前不会有配置,但对象本身将可用。
在这里我需要知道你的应用程序是如何工作的。有几个变体,你可以做到这一点,但我需要更多关于你的应用程序的信息,以了解什么是最好的解决方案。