Ошибка Невозможно разрешить модуль http из web3-provider.umd.js

Я установил web3, чтобы связать Solidity с React-native. Как и в приведенном ниже коде, я развернул его из Remix и ввел адрес и ABI.

import Web3 from "web3";



const web3 = new Web3(
  new Web3.providers.HttpProvider("https://127.0.0.1:8545")
);

const address = "0x6cc33e32853a7fb0ac9ac2fb0d54cb56e4fb0f30";

const abi = [
  {
    constant: false,
    inputs: [
      {
        name: "_MASTER",
        type: "address"
      },
      {
        name: "_sitter",
        type: "address"
      },
      {
        name: "_sitterprice",
        type: "uint256"
      }
    ],
    name: "CompleteSharePet",
    outputs: [],
    payable: true,
    stateMutability: "payable",
    type: "function"
  },
  {
    constant: false,
    inputs: [
      {
        name: "_OWNER",
        type: "address"
      },
      {
        name: "_ownersharetext",
        type: "string"
      },
      {
        name: "_ownerprice",
        type: "uint256"
      }
    ],
    name: "OwnerShareText",
    outputs: [
      {
        name: "",
        type: "string"
      }
    ],
    payable: false,
    stateMutability: "nonpayable",
    type: "function"
  },
  {
    constant: false,
    inputs: [
      {
        name: "_ownerseller",
        type: "address"
      },
      {
        name: "_petsitter",
        type: "address"
      },
      {
        name: "_MASTER",
        type: "address"
      },
      {
        name: "_ownerprice",
        type: "uint256"
      }
    ],
    name: "PetChange",
    outputs: [],
    payable: true,
    stateMutability: "payable",
    type: "function"
  },
  {
    constant: false,
    inputs: [
      {
        name: "_PETSITTER",
        type: "address"
      },
      {
        name: "_master",
        type: "address"
      },
      {
        name: "_ownerprice",
        type: "uint256"
      }
    ],
    name: "PetChangeTransaction",
    outputs: [],
    payable: true,
    stateMutability: "payable",
    type: "function"
  },
  {
    constant: false,
    inputs: [
      {
        name: "_petsittertext",
        type: "string"
      },
      {
        name: "_sitterprice",
        type: "uint256"
      }
    ],
    name: "PetSitterShareText",
    outputs: [
      {
        name: "",
        type: "string"
      }
    ],
    payable: false,
    stateMutability: "nonpayable",
    type: "function"
  },
  {
    constant: false,
    inputs: [
      {
        name: "_sitter",
        type: "address"
      }
    ],
    name: "testsitter",
    outputs: [],
    payable: true,
    stateMutability: "payable",
    type: "function"
  },
  {
    constant: false,
    inputs: [
      {
        name: "_master",
        type: "address"
      },
      {
        name: "_OWNER",
        type: "address"
      },
      {
        name: "_sitterprice",
        type: "uint256"
      }
    ],
    name: "TransactionSharePet",
    outputs: [],
    payable: true,
    stateMutability: "payable",
    type: "function"
  },
  {
    constant: false,
    inputs: [
      {
        name: "hash",
        type: "string"
      },
      {
        name: "ipfs",
        type: "string"
      }
    ],
    name: "uploadImage",
    outputs: [],
    payable: false,
    stateMutability: "nonpayable",
    type: "function"
  },
  {
    constant: true,
    inputs: [],
    name: "AllOwnerCount",
    outputs: [
      {
        name: "",
        type: "uint256"
      }
    ],
    payable: false,
    stateMutability: "view",
    type: "function"
  },
  {
    constant: true,
    inputs: [],
    name: "AllPetSitter",
    outputs: [
      {
        name: "",
        type: "uint256"
      }
    ],
    payable: false,
    stateMutability: "view",
    type: "function"
  },
  {
    constant: true,
    inputs: [],
    name: "getOwnerAddresses",
    outputs: [
      {
        name: "",
        type: "address[]"
      }
    ],
    payable: false,
    stateMutability: "view",
    type: "function"
  },
  {
    constant: true,
    inputs: [
      {
        name: "_owner",
        type: "address"
      }
    ],
    name: "getOwnerInfo",
    outputs: [
      {
        name: "",
        type: "string"
      },
      {
        name: "",
        type: "string"
      },
      {
        name: "",
        type: "string"
      }
    ],
    payable: false,
    stateMutability: "view",
    type: "function"
  },
  {
    constant: true,
    inputs: [],
    name: "getPetSitterAddresses",
    outputs: [
      {
        name: "",
        type: "address[]"
      }
    ],
    payable: false,
    stateMutability: "view",
    type: "function"
  },
  {
    constant: true,
    inputs: [
      {
        name: "_petsitter",
        type: "address"
      }
    ],
    name: "getPetSitterInfo",
    outputs: [
      {
        name: "",
        type: "string"
      },
      {
        name: "",
        type: "string"
      },
      {
        name: "",
        type: "string"
      }
    ],
    payable: false,
    stateMutability: "view",
    type: "function"
  },
  {
    constant: true,
    inputs: [
      {
        name: "",
        type: "uint256"
      }
    ],
    name: "OwnerAddresses",
    outputs: [
      {
        name: "",
        type: "address"
      }
    ],
    payable: false,
    stateMutability: "view",
    type: "function"
  },
  {
    constant: true,
    inputs: [
      {
        name: "",
        type: "uint256"
      }
    ],
    name: "PetSitterAddresses",
    outputs: [
      {
        name: "",
        type: "address"
      }
    ],
    payable: false,
    stateMutability: "view",
    type: "function"
  },
  {
    constant: true,
    inputs: [
      {
        name: "_OWNER",
        type: "address"
      }
    ],
    name: "test",
    outputs: [
      {
        name: "",
        type: "uint256"
      }
    ],
    payable: false,
    stateMutability: "view",
    type: "function"
  },
  {
    constant: true,
    inputs: [
      {
        name: "_MASTER",
        type: "address"
      }
    ],
    name: "test2",
    outputs: [
      {
        name: "",
        type: "uint256"
      }
    ],
    payable: false,
    stateMutability: "view",
    type: "function"
  }
];
export class WalletSetting extends Component {
  test() {
    web3.eth.getAccounts().then(console.log);
  }
  render() {
    return this.test;
  }
}

export default (myContract = new web3.eth.Contract(abi, address));

Параметр был безошибочным, но ошибка произошла при импорте с использованием mycontact.

import WalletSetting from "../web3";
.
.
.
  </TouchableOpacity>
        <WalletSetting />
      </LinearGradient>

Изображение ошибки

Я удалил все node_modules и весь кеш, как показано на картинке. Однако произошла та же ошибка, и, хотя мы много искали с помощью поиска Goolgle, мы еще не решили ее.

Жду хорошего ответа. Пожалуйста, помогите мне с решением.


Я загрузил версию web3 как «^ 1.0.0-beta.34», чтобы устранить существующую ошибку, но возникла другая ошибка.

Ошибка

Невозможно разрешить модуль crypto из /Users/lucky/pettest/node_modules/web3-eth-accounts/src/index.js: модуль crypto не существует на карте модуля ускорения

Поэтому я пошел в Google за справкой https://gist.github.com/dougbacelar/29e60920d8fa1982535247563eb63766. И установите "node-libs-browser": "^ 2.2.0", "babelpresetes2015": "^ 6.24.1", и создайте файл с именем rn-cli.config.js, global.js и импортируйте файл globaljs в ваш файл web3.js, но ошибка осталась прежней.

Как я могу это исправить?

https://gist.github.com/dougbacelar/29e60920d8fa1982535247563eb63766

Эта ссылка не решит мою проблему.


person samjamy    schedule 15.02.2019    source источник


Ответы (2)


web3 был создан для работы в среде браузера. Собственная среда Android отличается от среды браузера, например, в ней нет класса crypto, который использует web3. Использование web3 с response native потребует дополнительной настройки. Вы можете следовать этому руководству: https://gist.github.com/dougbacelar/29e60920d8fa1982535247563eb63766

Также вы можете найти здесь шаблон: https://github.com/dougbacelar/react-native-web3

person nikos fotiadis    schedule 15.02.2019
comment
Я создал и установил файл по уже рекомендованной вами ссылке, но ошибка осталась прежней. - person samjamy; 19.02.2019
comment
Попробуйте это: stackoverflow.com / questions / 52697108 /. дайте мне знать, если ваше сообщение об ошибке изменится. - person nikos fotiadis; 19.02.2019
comment
Я не могу использовать Link, потому что использую Expo. - person samjamy; 22.02.2019

У меня есть решение части вашей проблемы, касающейся криптовалюты. Установите react-native-crypto и сохраните его как зависимость, затем babel-plugin-module-resolver как зависимость разработчика и поместите .babelrc файл в корень вашего проекта, который содержит что-то вроде этого:

{
  "plugins": [
    ["module-resolver", {
      "root": ["."],
      "alias": {
        "crypto": "react-native-crypto"
      }
    }]
  ]
}

Это заменяет любые require('crypto') в ваших установленных пакетах на require('react-native-crypto'), и у меня это сработало. Однако в моем случае тот же пакет, который у меня был, в котором отсутствовала криптография, также отсутствует http, поэтому я пришел в эту ветку, чтобы, надеюсь, найти полифилл и для него. Я использую RN v0.60.3, npm v6.9.0 и node v10.16.0 для всех, кто интересуется. Также пакет, для которого мне нужна была эта «прокладка», - это пакет request, который, похоже, является подподподподзависимостью от jest. (npm list request).

Надеюсь, это кому-нибудь поможет!

Я нашел это решение здесь: https://stackoverflow.com/a/46605706/12375465 и здесь: https://medium.com/studioarmix/the-joy-of-joi-hacking-node-deps-1337fd5e586f

person Japser36    schedule 14.11.2019