代码之家  ›  专栏  ›  技术社区  ›  Shivam Sahil

catchd-SyntaxError:由于约束,无法在模块外部使用'import.meta'|使用babelrc或webpack-config而不打包json的解决方案

  •  0
  • Shivam Sahil  · 技术社区  · 3 年前

    使用import语句在dev环境中运行良好,但在prod中会中断

    我正在开发一个由许多其他存储库组成的单存储库。

    我在React中有一个类似于这样的懒惰加载程序函数:

    const lazilyLoadLocale = async (locale: Locale): Promise<Locales> => {
      if (localeMap[locale]) return localeMap[locale] as Locales
      return import(`./${locale}.json`)
        .then((data) => {
          localeMap[locale] = { ...data }
          return data.default as Locales
        })
        .catch((err) => {
          console.error(`Unable to load locale - ${locale}. Error: ${err.message}`)
          return english
        })
    }
    

    该函数在dev中按预期工作,但由于我使用导入,并且当与同时构建的所有其他应用程序绑定时,所有应用程序似乎都遵循模块类型 commonjs

    当我尝试运行构建的捆绑包时,我在控制台中收到以下错误:

    caught SyntaxError: Cannot use 'import.meta' outside a module (at runtime.js:1:2637)
    

    请注意,我无法添加 type: 'module' 在package.json中,因为我无法访问它,它对所有文件都很常见。我能利用的是 babelrc webpack config

    0 回复  |  直到 3 年前