ОПЦИИ net :: ERR_CONNECTION_REFUSED ... но сервер работает как положено ?!реагируют / выразить - PullRequest
0 голосов
/ 13 декабря 2018

Я вижу, что на эту тему уже есть много сообщений, поэтому я прошу прощения, если это повторяется.

Что странно и, возможно, уникально (я не знаю), так это то, что сервер, кажется, функционирует и правильно выполняет вызов API.

У меня есть react интерфейс сexpress серверная часть размещается в экземпляре AWS EC2.Как было сказано выше, когда мой клиент делает запрос axios.post, сервер делает все, что должен, но мне возвращаются две ошибки.Один -

OPTIONS http://us-west-1.compute.amazonaws.com:3000 net::ERR_CONNECTION_REFUSED

Другой -

Error: Network Error at createError (createError.js:17) at XMLHttpRequest.handleError (xhr.js:87)

Код реакции:

import React from "react";
import PaypalExpressBtn from "react-paypal-express-checkout";
import axios from "axios";

export default class Pay extends React.Component {

constructor(props) {
 super(props);
 this.state = {
  items: {}
  };
 }

  render() {
    const onSuccess = payment => {
      axios
        .post("http://compute.amazonaws.com:3000/", {
          value: this.props.value,
          fileName: this.props.fileName,
          hash: this.props.hash
        })
        .then(response => console.log(response.data))
        .catch(function(error) {
          console.log(error);
        });

      console.log(payment);
    };

    let env = "sandbox"; // you can set here to 'production' for production
    let currency = "USD"; // or you can set this value from your props or state
    let total = 3.33; // same as above, this is the total amount (based on 

    const client = {
      sandbox:
        "...key...",
      production: "YOUR-PRODUCTION-APP-ID"
    };

    return (
      <div>
        <PaypalExpressBtn
          onSuccess={onSuccess}
        />
      </div>
    );
  }
}

экспресс-кодэто:

const express = require("express");
const app = express();
const Tx = require("ethereumjs-tx");
var cors = require('cors')
const Web3 = require("web3");
const web3 = new Web3(
  "https://ropsten.infura.io/v3/d55489f8ea264a1484c293b05ed7eb85"
);

app.use(cors());

const abi = [...]

const contractAddress = "0x15E1ff7d97CB0D7C054D19bCF579e3147FC9009b";
const myAccount = "0x59f568176e21EF86017EfED3660625F4397A2ecE";
const privateKey1 = new Buffer(
  "...privateKey...",
  "hex"
);

app.post("/", function(req, res, next) {
 var hashValue = req.body.hash,
 fileName = req.body.fileName,
 value = req.body.value;

  const contract = new web3.eth.Contract(abi, contractAddress, {
    from: myAccount
    // gas: '50000'
  });

  web3.eth.getTransactionCount(myAccount, (err, txCount) => {
    //Smart contract data
    const data = contract.methods
      .setHashValue(value + " " + fileName + " " + hashValue)
      .encodeABI();

    // Build the transaction
    const txObject = {
      nonce: web3.utils.toHex(txCount),
      gasLimit: web3.utils.toHex(1000000),
      gasPrice: 20000000000,
      data: data,
      from: myAccount,
      to: contractAddress
    };

    // Sign the transaction
    const tx = new Tx(txObject);

    const serializedTx = tx.serialize();
    // const raw = '0x' + serializedTx.toString('hex')

    // Broadcast the transaction
    web3.eth
      .sendSignedTransaction("0x" + serializedTx.toString("hex"))
      .on("receipt", console.log);
    next();
  });
});

app.listen(3000, () => console.log("listening on 3000"));

Я хотел бы повторить, что сервер передает транзакцию Ethereum, как и предполагалось.Причина, по которой я спрашиваю, состоит в том, что я не хочу ошибок, и я проверяю, является ли это частью более крупной проблемы, с которой я сталкиваюсь при json обратном вызове.

Любая помощь приветствуется.Спасибо!

1 Ответ

0 голосов
/ 13 декабря 2018

Я решил это, добавив res.json()

web3.eth
  .sendSignedTransaction("0x" + serializedTx.toString("hex"))
  .on("receipt", console.log, res.json);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...