我正在运行一个安装了web3的vite.js
应用程序。当我在开发模式下运行应用程序时,一切工作正常,但当我在生产模式(构建)下运行它时,它失败了:"TypeError: Cannot read properties of undefined (reading 'call')"
.
我可以确认错误来自我的ABI生成的合约方法:contract.methods.isOwner(sender).call
({from: sender}, function (err, res)
如果我把这行注释掉,我就不会得到错误了。
你可以使用我的测试报告来重现这个错误:下载我的测试版本:https://github.com/nybroe/web3_vite_call_of_undefined/tree/main
用repo步骤遵循自述文件:
设置:
- 下载repro
- 导航到app">
- npm安装
dev test (which works)
- npm run dev
- 检查控制台-没有错误
构建测试
- npm run build npm run preview
- 检查控制台-您将看到以下错误:"TypeError: Cannot read properties of undefined (reading 'call')">
https://stackoverflow.com/a/69021714
我使用选项2
在你的vite.config.js
中,添加web3
:
import { defineConfig } from 'vite'
export default defineConfig({
⋮
resolve: {
alias: {
web3: 'web3/dist/web3.min.js',
},
// or
alias: [
{
find: 'web3',
replacement: 'web3/dist/web3.min.js',
},
],
},
})