Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 赫罗库不能';部署MERN app后,t从db检索数据(给出503(服务不可用))_Node.js_Reactjs_Mongodb_Heroku_Mern - Fatal编程技术网

Node.js 赫罗库不能';部署MERN app后,t从db检索数据(给出503(服务不可用))

Node.js 赫罗库不能';部署MERN app后,t从db检索数据(给出503(服务不可用)),node.js,reactjs,mongodb,heroku,mern,Node.js,Reactjs,Mongodb,Heroku,Mern,我的MERN stack应用程序在本地运行良好,但在Heroku上成功部署后,该应用程序仍在运行,但无法从Mongodb检索数据。项目未显示,用户无法登录,并且在控制台上出现以下错误: https://tranquil-ridge-25766.herokuapp.com/api/items 503 (Service Unavailable) 我尝试了很多东西,但没有帮助。我怀疑我在路上做错了什么 如果(process.env.NODE_env==“production”) 线路。(我还在Her

我的MERN stack应用程序在本地运行良好,但在Heroku上成功部署后,该应用程序仍在运行,但无法从Mongodb检索数据。项目未显示,用户无法登录,并且在控制台上出现以下错误:

https://tranquil-ridge-25766.herokuapp.com/api/items 503 (Service Unavailable)
我尝试了很多东西,但没有帮助。我怀疑我在路上做错了什么

如果(process.env.NODE_env==“production”)

线路。(我还在Heroku设置的配置变量中添加NODE.ENV=production)

这是我的server.js:

const express = require("express");
const mongoose = require("mongoose");
const bodyParser = require("body-parser");
const config = require("config");
const cors = require("cors");
const path = require("path");

const app = express();
app.use(cors());
//Bodyparser Middleware
app.use(bodyParser.json());

// DB config

const db = config.get("mongoURI");

//connect to Mongo
mongoose
  .connect(db, {
    useNewUrlParser: true,
    useCreateIndex: true,
    useUnifiedTopology: true
  })
  .then(() => console.log("MongoDB Connected..."))
  .catch(err => console.log(err));

//Use routes

app.use("/api/items", require("./routes/api/items"));
app.use("/api/users", require("./routes/api/users"));

//Serve static assets if in production
if (process.env.NODE_ENV === "production") {
  //set static folder
  app.use(express.static("client/build"));

  app.get("*", (req, res) => {
    res.sendFile(path.resolve(__dirname, "client", "build", "index.html"));
  });
}

const port = process.env.PORT || 5000;

app.listen(port, () => console.log(`Server started on port ${port}`));

也许我们可以提取一些信息,准确地告诉我们我们得到了什么

   const dbCheck = mongoose
      .connect(db, {
        useNewUrlParser: true,
        useCreateIndex: true,
        useUnifiedTopology: true
      })
      .then(() => console.log(dbCheck, '---db check----))
      .catch(err => console.log(err));
这可能会为我们提供有关您连接到哪个数据库的更多信息,也很难说,但您如何检查是否正在使用prod db?你在用这样的东西吗

mongoose.connect(process.env.MONGODB_URI ||
    'mongodb://localhost:27017/kb')
如果您在json中输入节点_ENV,您确定它确实是“生产”吗?你可以运行一个

if (process.env.NODE_ENV == "production") {

通过这种方式,您可能会发现节点_ENV中有一个额外的空间或类似的东西,只是为了进行故障排除

也许我们可以提取一些信息,准确地告诉我们得到了什么

   const dbCheck = mongoose
      .connect(db, {
        useNewUrlParser: true,
        useCreateIndex: true,
        useUnifiedTopology: true
      })
      .then(() => console.log(dbCheck, '---db check----))
      .catch(err => console.log(err));
这可能会为我们提供有关您连接到哪个数据库的更多信息,也很难说,但您如何检查是否正在使用prod db?你在用这样的东西吗

mongoose.connect(process.env.MONGODB_URI ||
    'mongodb://localhost:27017/kb')
如果您在json中输入节点_ENV,您确定它确实是“生产”吗?你可以运行一个

if (process.env.NODE_ENV == "production") {

通过这种方式,您可能会发现节点_ENV中有一个额外的空间或类似的东西,只是为了进行故障排除

好了,我终于找到了解决办法。对于具有相同类型问题的任何人,应按照以下4个步骤在Heroku上部署MERN堆栈:

1-
const-port=process.env.port | 5000确保在server.js中为端口添加一个env变量

2-还将process.env.MONGODB_URI变量添加到mongoose.connect

mongoose
  .connect(process.env.MONGODB_URI || db, {
    useNewUrlParser: true,
    useCreateIndex: true,
    useUnifiedTopology: true
  })
  .then(() => console.log("MongoDB Connected..."))
  .catch(err => console.log(err));
3-添加if语句以在生产中设置静态文件夹。它应该在你的应用程序路由之后

if (process.env.NODE_ENV === "production") {
  app.use(express.static("client/build"));

  app.get("*", (req, res) => {
    res.sendFile(path.resolve(__dirname, "client", "build", "index.html"));
  });
}
4-将这些行添加到
scripts
对象中的主文件夹package.json文件中

“heroku后期构建”:“cd客户端和npm安装和npm运行构建”

完成这些步骤后,只需在终端上通过“heroku登录”和“heroku创建”创建,最后一步是将mongoLab插件添加到heroku:

heroku addons:create mongolab:sandbox

你需要向Heroku验证信用卡才能解决这个问题,但别担心,“沙盒”是一个免费选项,它从不收费。你的应用程序已经准备好了,需要详细的解释,而且,多亏了这个了不起的家伙,请在他的youtube频道上查看:

好的,我终于找到了我的解决方案。对于具有相同类型问题的任何人,应按照以下4个步骤在Heroku上部署MERN堆栈:

1-
const-port=process.env.port | 5000确保在server.js中为端口添加一个env变量

2-还将process.env.MONGODB_URI变量添加到mongoose.connect

mongoose
  .connect(process.env.MONGODB_URI || db, {
    useNewUrlParser: true,
    useCreateIndex: true,
    useUnifiedTopology: true
  })
  .then(() => console.log("MongoDB Connected..."))
  .catch(err => console.log(err));
3-添加if语句以在生产中设置静态文件夹。它应该在你的应用程序路由之后

if (process.env.NODE_ENV === "production") {
  app.use(express.static("client/build"));

  app.get("*", (req, res) => {
    res.sendFile(path.resolve(__dirname, "client", "build", "index.html"));
  });
}
4-将这些行添加到
scripts
对象中的主文件夹package.json文件中

“heroku后期构建”:“cd客户端和npm安装和npm运行构建”

完成这些步骤后,只需在终端上通过“heroku登录”和“heroku创建”创建,最后一步是将mongoLab插件添加到heroku:

heroku addons:create mongolab:sandbox

你需要向Heroku验证信用卡才能解决这个问题,但别担心,“沙盒”是一个免费选项,它从不收费。所以你的应用程序已经准备好了,需要详细的解释,而且,多亏了这个了不起的家伙,请在他的youtube频道上查看它:

它使用以下格式吗?,mongodb://myDBReader:D1fficultP%40ssw0rd@mongodb0.example.com:27017/adminYou是MongoURI吗?就是这样:
mongodb+srv://name:password@mernshopping nixua.mongodb.net/test?retryWrites=true&w=mailty
是的,看起来不错。我想知道你是否仍然连接到你的localhost,,我必须发布一些代码。是的,localhost工作正常。只是在Heroku部署后,它似乎无法连接数据库检查答案是否使用以下格式?,mongodb://myDBReader:D1fficultP%40ssw0rd@mongodb0.example.com:27017/adminYou是MongoURI吗?就是这样:
mongodb+srv://name:password@mernshopping nixua.mongodb.net/test?retryWrites=true&w=mailty
是的,看起来不错。我想知道你是否仍然连接到你的localhost,,我必须发布一些代码。是的,localhost工作正常。只是在Heroku deployCheck之后,它似乎无法连接数据库。我添加了dbCheck的东西。什么都没有发生,仍然是一样的,它在本地工作,无法在Heroku中获取数据,控制台中也没有任何内容。。。我没有得到第二个代码,我唯一的mongoose.connect就是server.js中的那一个。如果您使用的是heroku,您应该在应用程序的设置页面中将mongoDB作为配置变量推送。把它带进来,检查一下,如果不是本地主机的话。另外,如果你有windows,你可以下载mongo Community,检查你的数据库是否真的是upI添加了dbCheck的东西没有发生什么,仍然是一样的,它在本地工作,不能在heroku中获取数据,控制台中也没有任何东西。。。我没有得到第二个代码,我唯一的mongoose.connect就是server.js中的那一个。如果您使用的是heroku,您应该在应用程序的设置页面中将mongoDB作为配置变量推送。把它带进来,检查一下,如果不是本地主机的话。此外,如果您有windows,您可以下载mongo Community,并查看数据库是否已启动