【问题标题】:Webpack 2 dynamic import file generated by babelbabel 生成的 webpack 2 动态导入文件
【发布时间】:2018-01-03 11:02:42
【问题描述】:

当前设置

  1. create-react-app 创建的设置中带有 React 的 Webpack
  2. Babel React Intl plugin 和 Manager 提取字符串进行翻译

期望的行为

babel 插件会生成一个文件,其中包含所有必须翻译的提取字符串。到现在为止还挺好。这发生在 webpack 和 babel 运行时(解析和编译代码)。

我想将生成messages.json 文件的require 放入我的代码中,因为我必须在运行时将该文件发送到API。

所以我想像这样使用动态导入的 Webpack 2 功能:

export const getTranslations = (language) => {
    import('translations/en.json').then(messages => { ... do stuff ...})
}

问题

Webpack 在编译时当然无法找到该文件,因此它会报错:

Module not found: Can't resolve 'translations/en.json'

【问题讨论】:

    标签: webpack dynamic-import


    【解决方案1】:

    如果你的文件在你的文件夹中(所以不在 node_modules 中),它的路径应该写成相对路径:

    export const getTranslations = (language) => {
      import('./translations/en.json').then(messages => { ... do stuff ...})
    }
    

    这行得通吗?

    【讨论】:

    • 路径不是问题,因为 webpack 被配置为解析查看 node_modules 以及我的 src 文件夹的模块。如果我预先生成文件,它确实有效。问题是该文件在构建时不存在。
    • @stilllife 你有解决这个问题的方法吗?我正在使用服务器生成的配置文件(在编译/构建时间后创建很长时间)
    • 我改变了方法并在单独的 babel 运行中预生成文件。这样文件在编译之前就一直存在。
    猜你喜欢
    • 2018-01-13
    • 1970-01-01
    • 2023-03-27
    • 2018-09-22
    • 2017-04-23
    • 2020-06-01
    • 2019-02-19
    • 2019-06-07
    • 1970-01-01
    相关资源
    最近更新 更多