TypeError: Cannot read properties of undefined (reading 'call') on build but not dev
TypeError: Cannot read properties of undefined (reading 'call') on build but not dev
我正在 运行安装了一个 vite.js
应用程序并安装了 web3。
当我 运行 处于开发模式的应用程序时,一切正常,但是当我 运行 它处于生产模式(构建)时,它失败了:
"TypeError: Cannot read properties of undefined (reading 'call')"
.
我可以确认错误来自我的 ABI 生成的合约方法:
contract.methods.isOwner(发件人).call
({from: sender}, 函数 (err, res)
如果我注释掉这一行,我就不会收到错误。
您可以使用我的测试库重现错误:
下载我的测试仓库:
https://github.com/nybroe/web3_vite_call_of_undefined/tree/main
按照自述文件进行回购步骤:
设置:
- 下载重现
- 导航至“应用程序”
- npm 安装
开发测试(有效)
- npm 运行 开发
- 检查控制台 - 没有错误
构建测试(中断)
- npm 运行 构建
- npm 运行 预览
- 检查控制台 - 您将看到以下错误:“类型错误:无法读取未定义的属性(读取 'call')”
我使用选项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',
},
],
},
})
我正在 运行安装了一个 vite.js
应用程序并安装了 web3。
当我 运行 处于开发模式的应用程序时,一切正常,但是当我 运行 它处于生产模式(构建)时,它失败了:
"TypeError: Cannot read properties of undefined (reading 'call')"
.
我可以确认错误来自我的 ABI 生成的合约方法:
contract.methods.isOwner(发件人).call
({from: sender}, 函数 (err, res)
如果我注释掉这一行,我就不会收到错误。
您可以使用我的测试库重现错误: 下载我的测试仓库: https://github.com/nybroe/web3_vite_call_of_undefined/tree/main
按照自述文件进行回购步骤:
设置:
- 下载重现
- 导航至“应用程序”
- npm 安装
开发测试(有效)
- npm 运行 开发
- 检查控制台 - 没有错误
构建测试(中断)
- npm 运行 构建
- npm 运行 预览
- 检查控制台 - 您将看到以下错误:“类型错误:无法读取未定义的属性(读取 'call')”
我使用选项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',
},
],
},
})