设置为生产模式时,Webpack Globalize 构建失败:未提供格式化程序或解析器
Webpack Globalize fails build when set to production mode: No formatters or parsers provided
我正在开发 React/Webpack/Globalize 应用程序。
在开发模式下一切正常(尽管 Globalize 坚持编译所有语言环境而不是我选择的语言环境,但这是另一天的另一个问题)。
但是,当我在我的 webpack 配置中设置 production: true
时,当 运行 npm run build
时出现以下错误
> webpack --config webpack.prod.config.js
/opt/app/ui/node_modules/globalize-webpack-plugin/GlobalizeCompilerHelper.js:72
throw e;
^
Error: No formatters or parsers has been provided
我的印象是 globalize webpack 插件是用来处理预编译的。知道为什么我会看到这个错误吗?当我设置 production: false
时编译正常。
我的插件设置是:
new GlobalizePlugin({
production: true,
developmentLocale: "en",
supportedLocales: [ "en"],
output: "i18n/[locale].[hash].js"
}),
当文件更改和 webpack 开发服务器重建时,我收到很多这样的消息,表明我未使用的语言环境重新复杂化:
[461] ./~/cldr-data/main/es-PY/dateFields.json 15 kB {0} [optional]
[462] ./~/cldr-data/main/es-SV/dateFields.json 15 kB {0} [optional]
[463] ./~/cldr-data/main/es-US/dateFields.json 15 kB {0} [optional]
[464] ./~/cldr-data/main/es-UY/dateFields.json 15 kB {0} [optional]
[465] ./~/cldr-data/main/es-VE/dateFields.json 15 kB {0} [optional]
[466] ./~/cldr-data/main/es/dateFields.json 15 kB {0} [optional]
我尝试的任何方法似乎都解决了这个问题。
谢谢
就目前而言,messages
键不是 'optional',但实际上是必需的。更重要的是,在某个地方你需要通过调用 Globalize.formatMessage("somekey")
(你的 lang 文件中存在一些键)来 'prime'(没有更好的词)消息格式化程序。当 production
设置为 true
时,所有这些都是必需的。
另外,如果您确实将 production 设置为 true,output
路径必须与源代码树中的现有路径相匹配。例如,如果您的代码构建到 /assets
,输出路径应该是 assets/i18n/[locale].[hash].js
。否则 i18n 目录将不会在构建时创建。
所有这些都来自 github 存储库中的讨论:
https://github.com/rxaviers/globalize-webpack-plugin/issues/10
我正在开发 React/Webpack/Globalize 应用程序。
在开发模式下一切正常(尽管 Globalize 坚持编译所有语言环境而不是我选择的语言环境,但这是另一天的另一个问题)。
但是,当我在我的 webpack 配置中设置 production: true
时,当 运行 npm run build
> webpack --config webpack.prod.config.js
/opt/app/ui/node_modules/globalize-webpack-plugin/GlobalizeCompilerHelper.js:72
throw e;
^
Error: No formatters or parsers has been provided
我的印象是 globalize webpack 插件是用来处理预编译的。知道为什么我会看到这个错误吗?当我设置 production: false
时编译正常。
我的插件设置是:
new GlobalizePlugin({
production: true,
developmentLocale: "en",
supportedLocales: [ "en"],
output: "i18n/[locale].[hash].js"
}),
当文件更改和 webpack 开发服务器重建时,我收到很多这样的消息,表明我未使用的语言环境重新复杂化:
[461] ./~/cldr-data/main/es-PY/dateFields.json 15 kB {0} [optional]
[462] ./~/cldr-data/main/es-SV/dateFields.json 15 kB {0} [optional]
[463] ./~/cldr-data/main/es-US/dateFields.json 15 kB {0} [optional]
[464] ./~/cldr-data/main/es-UY/dateFields.json 15 kB {0} [optional]
[465] ./~/cldr-data/main/es-VE/dateFields.json 15 kB {0} [optional]
[466] ./~/cldr-data/main/es/dateFields.json 15 kB {0} [optional]
我尝试的任何方法似乎都解决了这个问题。
谢谢
就目前而言,messages
键不是 'optional',但实际上是必需的。更重要的是,在某个地方你需要通过调用 Globalize.formatMessage("somekey")
(你的 lang 文件中存在一些键)来 'prime'(没有更好的词)消息格式化程序。当 production
设置为 true
时,所有这些都是必需的。
另外,如果您确实将 production 设置为 true,output
路径必须与源代码树中的现有路径相匹配。例如,如果您的代码构建到 /assets
,输出路径应该是 assets/i18n/[locale].[hash].js
。否则 i18n 目录将不会在构建时创建。
所有这些都来自 github 存储库中的讨论:
https://github.com/rxaviers/globalize-webpack-plugin/issues/10