Babel.js Vite.js + React:超过最大调用堆栈大小

jm2pwxwz  于 2023-08-01  发布在  Babel
关注(0)|答案(2)|浏览(173)

我正在将使用CRA创建的大型应用程序迁移到Vite.js
我按照this guide使用现有应用程序配置了新的bundler,现在在运行开发服务器时一切似乎都很好。
然而,当尝试编译生产构建时,我在以下错误中运行:

vite v2.6.14 building for production...
✓ 162 modules transformed.
[vite:react-jsx] unknown: Maximum call stack size exceeded
file: /Users/matteocarpi/Documents/Web/philip-morris/aws-amplify-multi-tenant/node_modules/react-i18next/dist/es/Trans.js
error during build:
RangeError: unknown: Maximum call stack size exceeded
    at getJSXProps (/Users/matteocarpi/Documents/Web/aws-amplify-multi-tenant/node_modules/vite-react-jsx/dist/cjs/babelRestoreJsx.js:79:29)
    at getJSXNode (/Users/matteocarpi/Documents/Web/aws-amplify-multi-tenant/node_modules/vite-react-jsx/dist/cjs/babelRestoreJsx.js:31:23)
    at PluginPass.CallExpression (/Users/matteocarpi/Documents/Web/aws-amplify-multi-tenant/node_modules/vite-react-jsx/dist/cjs/babelRestoreJsx.js:165:30)
    at newFn (/Users/matteocarpi/Documents/Web/aws-amplify-multi-tenant/node_modules/@babel/traverse/lib/visitors.js:177:21)
    at NodePath._call (/Users/matteocarpi/Documents/Web/aws-amplify-multi-tenant/node_modules/@babel/traverse/lib/path/context.js:53:20)
    at NodePath.call (/Users/matteocarpi/Documents/Web/aws-amplify-multi-tenant/node_modules/@babel/traverse/lib/path/context.js:40:17)
    at NodePath.visit (/Users/matteocarpi/Documents/Web/aws-amplify-multi-tenant/node_modules/@babel/traverse/lib/path/context.js:100:31)
    at TraversalContext.visitQueue (/Users/matteocarpi/Documents/Web/aws-amplify-multi-tenant/node_modules/@babel/traverse/lib/context.js:103:16)
    at TraversalContext.visitQueue (/Users/matteocarpi/Documents/Web/aws-amplify-multi-tenant/node_modules/@babel/traverse/lib/context.js:109:21)
    at TraversalContext.visitQueue (/Users/matteocarpi/Documents/Web/aws-amplify-multi-tenant/node_modules/@babel/traverse/lib/context.js:109:21)

字符串
我知道这与Babel和i18next有关,但我有点陷入了具体的问题是什么。
关于如何进一步调试有什么提示吗?
先谢谢你,

3yhwsihp

3yhwsihp1#

我只在开发中使用reactJsx插件解决了这个问题:
vite.config.js:

export default defineConfig(({ mode }) => {
  const isDevEnv = mode === 'development';
  
  return {
    plugins: [
       isDevEnv && react(),
    ]
  }
}

字符串
正如本期杂志所建议的

izkcnapc

izkcnapc2#

.env已知问题

对于那些仍然面临这个问题的人来说,motdotla/dotenv-expand包(由Vite使用)有一个已知的问题,与.env文件中重复的变量名称有关。
问题已打开以供邀请:https://github.com/vitejs/vite/issues/13399
当一个变量引用另一个同名的变量时,就会发生错误,因此请检查.env文件是否有重复的名称。
这个方法的作用是:

// .env

APP_NAME=$NAME

字符串
这打破了:

// .env

APP_NAME=$APP_NAME

or

APP_NAME="${APP_NAME}"

相关问题