首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将应用程序部署到Heroku会引发错误{path=“/”path=“/favicon.ico”}。但是运行在本地主机上

将应用程序部署到Heroku会引发错误{path=“/”path=“/favicon.ico”}。但是运行在本地主机上
EN

Stack Overflow用户
提问于 2020-12-13 12:54:19
回答 1查看 1.1K关注 0票数 4

我正在尝试将我的应用程序部署到Heroku。我得到503 (服务不可用)错误,即使它运行在本地主机上。我尝试过许多解决方案,但都没有奏效。我的app.js文件

代码语言:javascript
复制
if (process.env.NODE_ENV !== "production") {
  require("dotenv").config();
}

const express = require("express");
const mongoose = require("mongoose");
const { ApolloServer } = require("apollo-server-express");
const auth = require("./middleware/auth");
const userController = require("./controllers/userController");
const typeDefs = require("./schema");
const resolvers = require("./resolvers");

const port = process.env.PORT || 4000;
const app = express();
app.set("port", port);

app.use((req, res, next) => {
  res.setHeader("Access-Control-Allow-Origin", "*");
  res.setHeader(
    "Access-Control-Allow-Methods",
    "OPTIONS, GET, POST, PUT, PATCH, DELETE"
  );
  res.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization");
  next();
});

app.use(auth);
app.get("/email-confirmation/:token", userController.confirmationPost);

const server = new ApolloServer({
  typeDefs,
  resolvers,
  formatError: (err) => {
    if (!err.originalError) {
      return err;
    }
    if (err.message.startsWith("Database Error: ")) {
      err.message = "Internal server error";
    }
    const data = err.originalError.data;
    const message = err.message || "Internal server error.";
    const code = err.originalError.code || 500;
    return { message: message, status: code, data: data };
  },
  context: ({ req, res }) => ({
    req,
    res,
  }),
});

server.applyMiddleware({ app });

mongoose
  .connect(process.env.DB_URL, {
    useNewUrlParser: true,
    useUnifiedTopology: true,
    useCreateIndex: true,
  })
  .then(() => {
    console.log("conneted to database");
    app.listen(port, () => {
      console.log("listening for requests on port " + port);
    });
  });

我的package.json是:

代码语言:javascript
复制
{
  "name": "server",
  "version": "1.0.0",
  "description": "",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node app.js",
    "dev": "nodemon app.js"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "apollo-server-express": "^2.17.0",
    "bcryptjs": "^2.4.3",
    "crypto": "^1.0.1",
    "express": "^4.17.1",
    "graphql": "^15.3.0",
    "jsonwebtoken": "^8.3.0",
    "mongoose": "^5.10.2",
    "nodemailer": "^6.4.16",
    "nodemailer-sendgrid-transport": "^0.2.0",
    "validator": "^10.8.0"
  },
  "devDependencies": {
    "dotenv": "^8.2.0",
    "eslint": "^7.7.0",
    "nodemon": "^2.0.6"
  }
}

heroku日志

我已经试过了所有的解决方案。但他们似乎都没有解决这个问题。拜托救救我。

更新:

在Heroku中安装DB_URL之后,它就开始工作了,但是我得到了另一个错误。

控制台:

代码语言:javascript
复制
1. GET https://capstone-ecommerce-backend.herokuapp.com/ 404 (Not Found)
2. Refused to load the image 'https://capstone-ecommerce-backend.herokuapp.com/favicon.ico' because it violates the following Content Security Policy directive: "default-src 'none'". Note that 'img-src' was not explicitly set, so 'default-src' is used as a fallback.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-13 13:14:54

尝试在Heroku应用程序中设置DB_URL。使用以下命令:

代码语言:javascript
复制
$ heroku config:set DB_URL=database_uri_here
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65275827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档