反应+快递+猫鼬部署到heroku无法正常工作

时间:2020-06-06 13:26:13

标签: mongodb express heroku mongoose mern

我一直在尝试用heroku部署我的mern(react + express / node.js + Passport)项目。 我有一个.env文件来定义DB_STRING_DEV和SESSION_SECRET。

由于某些原因,当我尝试部署项目时,heroku日志显示以下错误消息:

“错误[MongooseError]:uri的{​​{1}}参数必须是一个字符串,且未定义。确保openUri()mongoose.connect()的第一个参数为一个字符串。”

如果我进入localhost:5000 它只会从后端[请求状态] [1]获取baseroute get(“ /”) 但不是react路由中的路由(/,/ login,/ register或我在react中定义的其他路由)

任何人都可以请指教和帮助。谢谢!!!

以下是我的server.js中的代码

mongoose.createConnection()

2 个答案:

答案 0 :(得分:0)

建议不要将.env文件推送到Heroku(或github)。相反,您应该转到应用程序设置,然后在“ config vars”部分中添加环境变量。

要在Vue中进行路由,我必须在主Express文件中进行设置:

// Handle production
if (process.env.NODE_ENV === "production") {
    // Static folder
    app.use(express.static(__dirname + "/public/"));

    // Handle SPA
    app.get(/.*/, (req, res) => res.sendFile(__dirname + "/public/index.html"));
}

不确定这是否适用于React,尽管我想它会适用。

答案 1 :(得分:0)

现在我在以下代码之后切换路由,它终于显示了我的反应路线!

console.log("production!");
app.use(express.static("client/build"));
app.get("/", (req, res)=>{
  res.sendFile(path.join(__dirname + "/../build/index.html"))
});
}

app.use("/", baseRoute);
app.use("/auth", authRoute);
相关问题