我最近更新了我的Angular应用程序到V12。我使用Angular自己的国际化库@angular/localize
。我使用webpack的raw-loader
将xlf翻译文件作为字符串加载到我的main.ts中,使用以下代码
const locale = document['locale'] as string;
const translations = require(`raw-loader!./assets/locale/messages.${locale}.xlf`).default;
platformBrowserDynamic().bootstrapModule(AppModule, {
providers: [
{ provide: TRANSLATIONS, useValue: translations },
{ provide: LOCALE_ID, useValue: locale },
{ provide: TRANSLATIONS_FORMAT, useValue: 'xlf' }
]
});
更新后我得到以下错误错误:未找到模块:错误:无法解析“raw-loader”
这可能是什么原因呢?除了raw-loader还有其他方法吗?
2条答案
按热度按时间ozxc1zmp1#
我在迁移angular版本时遇到了这个问题,我已经用
npm install raw-loader --save-dev
解决了这个问题。这是因为angular 12现在使用webpack 5。如果你不能解决这个问题,请尝试更改const translations = require(raw-loader!./assets/locale/messages.${locale}.xlf
).default;对于ES导入动态声明,比如在你的例子中,你在里面使用了一个变量${locale},也许你可以看看这篇文章ES6 variable import name in node.js?。并使用!!raw-loader......而不是raw-loaderyrdbyhpb2#
**自webpack版本5起,raw-loader等加载器的使用已被弃用,并被称为Asset Modules的概念所取代。
要做到这一点,你首先需要定义如何加载资源。这在webpack的config中完成。
raw-loader
的替代品是asset/source类型:网络包配置
之后,您可以像任何其他本地依赖项一样导入资产文件:
main.ts