所以我在我的项目中使用 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 配置,但没有任何效果
您必须将
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",
}
最新的问题是由Uniswap包依赖引起的,需要填充JSBI
在这里回答 Vite 应用程序可以在 DEV 中运行,但在 BUILD 和 PREVIEW 之后不能运行 BigInt 不是一个函数