Webpack Web包动态导入中的字符串文字

Webpack Web包动态导入中的字符串文字,webpack,babeljs,dynamic-import,Webpack,Babeljs,Dynamic Import,我正在使用动态导入创建项目中所有区域设置的块。已创建块,但客户端在运行时报告此错误: Uncaught (in promise) ReferenceError: locale is not defined at _callee$ (main.js?f161:72) at tryCatch (runtime.js?98b8:62) at Generator.invoke [as _invoke] (runtime.js?98b8:288) at Generator.prototyp

我正在使用动态导入创建项目中所有区域设置的块。已创建块,但客户端在运行时报告此错误:

Uncaught (in promise) ReferenceError: locale is not defined
  at _callee$ (main.js?f161:72)
  at tryCatch (runtime.js?98b8:62)
  at Generator.invoke [as _invoke] (runtime.js?98b8:288)
  at Generator.prototype.(:8082/d2/v2/search/anonymous function) [as next] (webpack-internal:///./node_modules/@babel/runtime/node_modules/regenerator-runtime/runtime.js:114:21)
  at asyncGeneratorStep (asyncToGenerator.js?c973:3)
  at _next (asyncToGenerator.js?c973:25)
有关守则:

//main.js
从“/config”导入{locale};
(异步()=>{
常量格式化程序=新格式化程序({locale});
常数i18n=新VueI18n({
场所
格式化程序,
});
//例如,打印“en GB”,因此它不是未定义的
console.log(区域设置);
const messages=等待导入(
/*WebPackageChunkName:“[请求]”*/
`./locales/${locale}/translations.js`、//h(App),
});
})();
巴别塔配置:

"babel": {
  "presets": [
    "@babel/preset-env"
  ],
  "plugins": [
    [
      "@babel/plugin-proposal-object-rest-spread",
      {
        "useBuiltIns": true
      }
    ],
    "@babel/plugin-transform-runtime",
    "@babel/plugin-transform-async-to-generator",
    "@babel/plugin-syntax-dynamic-import"
  ]
},
区域设置按如下方式导出:

//config.js
export const locale=process.env.locale;//e、 g.“欧洲国家标准”
将导入路径更改为静态路径(如
/locales/en-GB/translations.js
)是有效的

编辑 当我将
locale
重新分配给一个中间变量时,它开始工作,如下所示:

(异步()=>{
// ...
const templacale=语言环境;
//在这里传递'locale'不起作用,但'templacale'起作用。。。
const messages=等待导入(
/*WebPackageChunkName:“[请求]”*/
`./locales/${tempocale}/translations.js`,
);
//出于某种原因,“locale”在这里可以接受
i18n.setLocaleMessage(区域设置,消息);
// ...
})();

我还注意到,在调试器中检查
locale
变量时,它在IIFE外部解析为实际字符串(“en GB”),但在内部解析为包含
locale
变量的模块。非常令人困惑,而且这个解决方案感觉太粗糙,无法接受@AluanHaddad错误消息特别指出,
locale
未定义。我个人猜测,动态导入功能不支持导入的计算表达式(当您考虑它时,这是有意义的,拆分什么?)。是的,我认为这是原因,但
/locals/${undefined}/translations.js
产生
“/locals/undefined/translations.js”
,而不是一个ERORR。到底是什么错误?编辑并添加它。wait只能在异步函数中使用。我刚刚测试了你的情况,对我来说效果很好。检查您的Babel配置和polyfills。@floydwch否,不幸的是没有。此后,我转到了其他项目,再也没有遇到过这个问题。