Vite Dev 模式可以工作,但服务构建不起作用。 n2.BigInt 不是函数

问题描述 投票:0回答:2

所以我在我的项目中使用 vite,这是一个使用turborepo 的 monorepo 设置。使用开发模式或构建项目时没有问题,但是当我为项目提供服务时,我收到错误

Uncaught (in promise) TypeError: n2.BigInt is not a function
。有人可以帮忙解释为什么 vite 的开发模式和构建模式工作方式不同吗?

将我的配置放在下面

export default defineConfig({
  plugins: [
    react(),
    viteTsconfigPaths(),
    svgrPlugin(),
    legacy(),
    commonjs(),
    nodePolyfills({ protocolImports: true }),
  ],
  optimizeDeps: {
    esbuildOptions: {
      target: "es2020", // Enable Big integer literals
      define: {
        global: "globalThis",
      },
      supported: {
        bigint: true,
      },
    },
  },
  resolve: {
    alias: {
      assert: "assert",
      buffer: "buffer",
      crypto: "crypto-browserify",
      http: "stream-http",
      https: "https-browserify",
      os: "os-browserify/browser",
      process: "process/browser",
      stream: "stream-browserify",
      util: "util",
      "~@fontsource": "@fontsource",
    },
  },
  server: {
    open: true,
    port: 3000,
  },
  build: {
    minify: false,
    target: "es2020", // Enable Big integer literals
    commonjsOptions: {
      transformMixedEsModules: true, // Enable @walletconnect/web3-provider which has some code in CommonJS
    },

    rollupOptions: {
      // maxParallelFileOps: 2,
      cache: false,
    },
    outDir: "build",
  },
});

我尝试使用 rollup 和 esbuildoptions 的不同设置更改 vite 配置,但没有任何效果

reactjs typescript config vite turborepo
2个回答
0
投票

您必须将

target
ESNext
更改为
es2020
,因为
BigInt
ESNext
中不可用。

build: {
    minify: false,
    target: "es2020", 
    commonjsOptions: {
      transformMixedEsModules: true, // Enable @walletconnect/web3-provider which has some code in CommonJS
    },

    rollupOptions: {
      // maxParallelFileOps: 2,
      cache: false,
    },
    outDir: "build",
  },

将此添加到您的

tsconfig
文件

{
  "compilerOptions": {
    "lib": [
      "es2020", "esnext"
    ],
    "module": "commonjs",
    "target": "es2020",
}

0
投票

最新的问题是由Uniswap包依赖引起的,需要填充JSBI

在这里回答 Vite 应用程序可以在 DEV 中运行,但在 BUILD 和 PREVIEW 之后不能运行 BigInt 不是一个函数

© www.soinside.com 2019 - 2024. All rights reserved.