我有一个函数在文件@/lang/index.js
中:
async function fetchMessages(locale) {
const module = await import(/*
webpackChunkName: "lang/[request]",
webpackExclude: /index/
*/ `@/lang/${locale}`)
return module.default
}
我希望可以热重载由此函数导入的模块。我已经尝试了几个不同的module.hot.accept()
变体,但都没有成功。
这是我的热重载代码,位于同一文件的末尾,但它并不起作用:
if (process.env.NODE_ENV !== "production" && module.hot) {
module.hot.accept(["./en-US"], () => {
const { locale } = i18n
fetchMessages(locale).then((strings) => {
i18n.setLocaleMessage(locale, strings)
})
})
}
有什么想法吗?我希望在检测到更改时可以热加载我的语言文件。
谢谢!
index.js
不是en-US.js
的直接父级。对于每个import()
表达式,都会创建一个新的“模块”。如果我使用Webpack的内部标识符("./src/lang lazy recursive ^\\.\\/.*$ exclude: index"
),那么它将起作用,但编译器将尝试将该字符串解析为模块并抛出错误。 - matpie