在heroku上部署了我的应用程序但出现错误:加载资源失败:net::ERR_CONNECTION_REFUSED

Posted

技术标签:

【中文标题】在heroku上部署了我的应用程序但出现错误:加载资源失败:net::ERR_CONNECTION_REFUSED【英文标题】:Deployed my app on heroku but got error: Failed to load resource: net::ERR_CONNECTION_REFUSED 【发布时间】:2020-04-23 23:54:32 【问题描述】:

我的应用前端是 Reactjs,后端是 Node js。我使用了 express 服务器和 graphql-express 服务器。我成功部署了我的应用程序。但它从加载数据开始,然后什么都没有显示。但是,如果我在本地运行 npm start,那么 heroku 应用程序就会开始工作。

这是我在浏览器中得到的错误

这是我服务器的 json 包文件。如果我在终端运行 npm run dev。它会打开我的 react js 应用。

    
  "name": "backend",
  "version": "1.0.0",
  "description": "personish vol 2",
  "main": "server.js",
  "scripts": 
    "start": "node server.js",
    "server": "node server.js",
    "client": "npm start --prefix client",
    "dev": "concurrently \"npm run server\" \"npm run client\""
  ,
  "author": "Alak",
  "license": "ISC",
  "dependencies": 
    "concurrently": "^5.0.2",
    "cors": "^2.8.5",
    "express": "^4.17.1",
    "express-graphql": "^0.9.0",
    "graphql": "^14.5.8",
    "pg": "^7.15.1",
    "pg-hstore": "^2.3.3",
    "sequelize": "^5.21.3"
  

这是我 react 的 json 包


  "name": "client",
  "version": "0.1.0",
  "private": true,
  "engines": 
    "node": "13.3.0",
    "npm": "6.13.0"
  ,
  "dependencies": 
    "@testing-library/jest-dom": "^4.2.4",
    "@testing-library/react": "^9.3.2",
    "@testing-library/user-event": "^7.1.2",
    "apollo-boost": "^0.4.7",
    "axios": "^0.19.0",
    "firebase": "^7.6.1",
    "graphql": "^14.5.8",
    "pg": "^7.15.1",
    "react": "^16.12.0",
    "react-apollo": "^3.1.3",
    "react-dom": "^16.12.0",
    "react-dropzone": "^10.2.1",
    "react-redux": "^7.1.3",
    "react-redux-firebase": "^3.0.5",
    "react-router-dom": "^5.1.2",
    "react-scripts": "3.3.0",
    "redux": "^4.0.4",
    "redux-firestore": "^0.11.0",
    "redux-thunk": "^2.3.0"
  ,
  "scripts": 
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  ,
  "eslintConfig": 
    "extends": "react-app"
  ,
  "browserslist": 
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  

这是我的 express 和 graphql-express 服务器。

const express = require("express");
const app = express();

const graphqlHTTP = require("express-graphql");
const schema = require("./schema");
const cors = require("cors"); 
const path = require("path");

app.use(cors());

app.use(
  "/graphql",
  graphqlHTTP(
    schema,
    pretty: true,
    graphiql: true
  )
);
app.use(express.static(path.join(__dirname, "build")));

app.get("/*", (req, res) => 
  res.sendFile(path.join(__dirname, "build", "index.html"));
);

const port = process.env.PORT || 8081;
app.listen(port, () =>
  console.log(`✅  Example app listening on port $port!`)
);

这是我的 react 应用文件。我使用 Apollo boost 连接 react app 和 node js app。我认为错误来自这里,不知道如何解决它

import React from "react";
import  ApolloClient, HttpLink, InMemoryCache  from "apollo-boost";
import  ApolloProvider  from "react-apollo";
const client = new ApolloClient(
  link: new HttpLink(
    uri: "http://localhost:8081/graphql"
  ),
  cache: new InMemoryCache()
);

这是我的 Heroku 应用

https://databaseapp2020.herokuapp.com/

【问题讨论】:

您的“ERR_CONNECTION_REFUSED”表明您正在尝试连接到“localhost:8081”。 我知道问题所在,但不知道解决方案。我应该使用公共 ip 而不是本地主机吗?例如:192.168.0.0:8081/graphql 【参考方案1】:

你的 heroku dyno/app 会有一个名字,你可以用它来访问你的 graphql,比如说你的笔记本电脑上的 graphiql 游乐场,或者你的 react-app...如果你的 heroku 应用程序实际上被命名为 databaseapp2020 并且正在运行,那么你假设您的 cors 在 dyno 环境变量中正确设置,将使用以下内容

https://databaseapp2020.herokuapp.com/graphql

【讨论】:

我不确定这是代码问题,heroku 日志是否告诉您您的应用程序运行正常?如果是这样,您应该将 uri:"localhost:8081/graphql" 替换为 uri:"databaseapp2020.herokuapp.com/graphql"... 但是如果您无法点击我在上面发布的链接,那么您的应用程序没有运行,如果它不会运行允许您访问时出现 cors 错误,那么您需要授予适当的权限 当应用程序运行并设置 cors 时,databaseapp2020.herokuapp.com/graphql 将带您进入 graphiql 游乐场屏幕

以上是关于在heroku上部署了我的应用程序但出现错误:加载资源失败:net::ERR_CONNECTION_REFUSED的主要内容,如果未能解决你的问题,请参考以下文章

我想在 Heroku 上部署一个 Django 应用程序,但出现错误

部署到 heroku 时出现错误“无法加载资源 404”bundle.js

Gradle projet,在heroku上部署期间出现错误NoSuchMethodException

在 Heroku 上部署 MEAN 应用程序时出现应用程序错误

React 和 Django 网站未在 Heroku 上加载

我正在尝试在 heroku 上部署我的 node.js discord 机器人,但我不断收到错误