#javascript #node.js #blockchain #ethereum #solidity
Вопрос:
Я новичок в React, поэтому заранее приношу извинения, если это очень глупая и очевидная ошибка.
Я пытаюсь создать децентрализованное приложение (DApp) для простой передачи файлов через блокчейн. Я следую учебнику по адресу : https://itnext.io/build-a-simple-ethereum-interplanetary-file-system-ipfs-react-js-dapp-23ff4914ce4e (версия tl;dr — в основном передача файлов по сети блокчейн. Вы загружаете файл в IPFS, а затем отправляете местоположение IPFS из одной учетной записи блокчейна в другую). Для интерфейса я использую React.
Следует отметить две вещи —
1. Я использую сеть Ropsten вместо сети Rinkeby, которая использовалась в этой статье
2. В REMIX я установил среду для развертывания как «Внедренный Web3». (что-то в первоначальном проекте было неоднозначным)
Одна из зависимостей для этого проекта есть ipfs-api
, но теперь она устарела. Поэтому мне пришлось использовать ipfs-http-client
вместо этого. Успешно npm установил его. Однако при компиляции я получаю ошибку
./node_modules/ipfs-http-client/src/lib/to-url-search-params.js
Module parse failed: Unexpected token (10:61)
You may need an appropriate loader to handle this file type.
| * @returns {URLSearchParams}
| */
| module.exports = ({ arg, searchParams, hashAlg, mtime, mode, ...options } = {}) => {
| if (searchParams) {
| options = {
В to-url-search-params.js файл —
'use strict'
const modeToString = require('./mode-to-string')
const { parseMtime } = require('ipfs-unixfs')
/**
* @param {*} params
* @returns {URLSearchParams}
*/
module.exports = ({ arg, searchParams, hashAlg, mtime, mode, ...options } = {}) => {
if (searchParams) {
options = {
...options,
...searchParams
}
}
if (hashAlg) {
options.hash = hashAlg
}
if (mtime != null) {
mtime = parseMtime(mtime)
options.mtime = mtime.secs
options.mtimeNsecs = mtime.nsecs
}
if (mode != null) {
options.mode = modeToString(mode)
}
if (options.timeout amp;amp; !isNaN(options.timeout)) {
// server API expects timeouts as strings
options.timeout = `${options.timeout}ms`
}
if (arg === undefined || arg === null) {
arg = []
} else if (!Array.isArray(arg)) {
arg = [arg]
}
const urlSearchParams = new URLSearchParams(options)
arg.forEach((/** @type {any} */ arg) => urlSearchParams.append('arg', arg))
return urlSearchParams
}
Все остальные файлы точно такие же, как и те, которые указаны в https://github.com/mcchan1/eth-ipfs .
Не уверен, в чем заключается ошибка… Заранее спасибо за помощь.
Комментарии:
1. Это не проблема реакции. Это проблема с вашим узловым модулем.
2. И как мне это исправить? Должен ли я опубликовать еще какой-либо код, чтобы помочь в диагностике проблемы?