我一直在尝试用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()
答案 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);