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

按照自述文件进行回购步骤:

设置:

  1. 下载重现
  2. 导航至“应用程序”
  3. npm 安装

开发测试(有效)

  1. npm 运行 开发
  2. 检查控制台 - 没有错误

构建测试(中断)

  1. npm 运行 构建
  2. npm 运行 预览
  3. 检查控制台 - 您将看到以下错误:“类型错误:无法读取未定义的属性(读取 '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',
      },
    ],
  },
})