Ошибка анализа модуля: Неожиданный токен в проекте React. Возможно, вам потребуется соответствующий загрузчик для обработки файлов этого типа

#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. И как мне это исправить? Должен ли я опубликовать еще какой-либо код, чтобы помочь в диагностике проблемы?