【问题标题】:Webpack Globalize fails build when set to production mode: No formatters or parsers provided设置为生产模式时,Webpack Globalize 构建失败:未提供格式化程序或解析器
【发布时间】:2015-12-18 17:07:43
【问题描述】:

我正在开发一个 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]

我尝试的任何方法似乎都无法解决这个问题。
谢谢

【问题讨论】:

  • 拜托,您能否提供一个包含简化示例的链接,我可以用来重现您面临的问题(例如,通过使用gist.github.com)?
  • 对不起,我怀疑我现在已经解决了这个问题(请参阅下面的答案)。复制它的快速方法是将 GlobalizePlugin 配置添加到 webpack 的配置文件中,没有 messages 键,并将生产设置为 true。那么npm run build 应该会因为这个错误而失败。
  • 很高兴您找到了解决方法,但它不正确。 messages 键是可选的(与您在下面的答案不同)。如果您或其他人有兴趣对此进行调查,请告诉我。我无法重现您遇到的失败,所以很遗憾我无法为您提供任何建议。谢谢
  • 更新。当源代码中没有使用 Globalize 函数时会发生错误。这应该由github.com/rxaviers/globalize-webpack-plugin/issues/10 修复。感谢您提出问题。

标签: node.js npm webpack javascript-globalize jquery-globalize


【解决方案1】:

就目前而言,messages 键不是“可选的”,但实际上是必需的。更重要的是,您需要通过调用Globalize.formatMessage("somekey") (其中 somekey 存在于您的 lang 文件中)来“启动”(因为没有更好的词)消息格式化程序。当production 设置为true 时,所有这些都是必需的。

同样,如果您将 production 设置为 true,output 路径必须与源代码树中的现有路径匹配。例如,如果您的代码构建到/assets,则输出路径应为assets/i18n/[locale].[hash].js。否则构建时不会创建 i18n 目录。

所有这些都来自github repo中的讨论:

https://github.com/rxaviers/globalize-webpack-plugin/issues/10

【讨论】:

    猜你喜欢
    • 2020-10-20
    • 2011-01-07
    • 2018-11-13
    • 2018-10-13
    • 1970-01-01
    • 2019-06-10
    • 2019-05-13
    • 2017-10-22
    • 2014-05-15
    相关资源
    最近更新 更多