node.js - 如何部署 MERN 应用程序,我得到“无法获取 /”
问题描述
我正在尝试在 Azure 上部署 MERN 应用程序,但是当我检查我的 url 时,我得到了错误cannot get /
。
我试图在生产环境的本地机器上启动我的节点服务器,但我只有一个空白页。
我尝试检查我的代码中是否没有路径问题所以在server.js
我console.log(path.resolve(__dirname, '../client/build'));
的本地它向我显示正确的路径但是在天蓝色它的结果undefined
所以我猜在天蓝色我不能使用__dirname
我的应用树是这样的:
|--client
|--build
|--node_modules
|--server
|--server.js
|--package.json
我的server.js
const dotenv = require('dotenv');
dotenv.config();
const express = require("express");
const mongoose = require("mongoose");
const bodyParser = require("body-parser");
const app = express();
const passport = require("passport");
const path = require('path');
const users = require("./routes/api/users");
// Bodyparser middleware
app.use(
bodyParser.urlencoded({
extended: false
})
);
app.use(bodyParser.json());
// DB Config
const db = require("./config/key.js").mongoURI;
console.log(db);
// Connect to MongoDB
mongoose.Promise = global.Promise;
mongoose.connect(db, { useNewUrlParser: true })
.then(() => console.log("MongoDB successfully connected"))
.catch(err => console.log(err));
// Passport middleware
app.use(passport.initialize());
// Passport config
require("./config/passport")(passport);
// Routes
app.use("/api/users", users);
// Serve static assets if in production
if (process.env.NODE_ENV === 'production') {
// Set static fold
console.log(path.resolve(__dirname, '../client/build'));
app.use(__dirname, 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 up and running on port
${port} !'));
老实说,我不知道我期望拥有什么。
当我在本地开发时,我的 node-js 服务器启动了,我的 react 服务器也启动了。
当我尝试对如何部署进行一些搜索时,我只能找到解释“复制粘贴它并且它将起作用”的教程,但我不知道它是如何工作的?
通过我的所有搜索,我想我必须运行节点服务器,它会从我的构建存储库中呈现我的前端,index.html
那么为什么我在 azure 上得到了cannot get /
?
##编辑##
实际上问题是 Azure 没有server.js
在生产模式下启动我,所以我的情况从未受到影响。
我没有这个cannot get /
了,我在本地也有同样的问题,我有一个空白页。如果我打开检查器,我可以看到它是我的 index.html,我可以在控制台中看到这个错误 Uncaught SyntaxError: Unexpected token < main.a3362a52.chunk.js:1 Uncaught SyntaxError: Unexpected token < index.bundle.js: 1
会不会是空白页的原因?
解决方案
推荐阅读
- mysql - 将汇总的 SQL 语句
- javascript - 如何处理量角器中发生的错误/异常?
- r - 根据列拆分数据集
- javascript - JavaScript 闭包变量在实例之间共享
- ag-grid - agSetColumnFilter 出现服务器端分页错误
- ruby-on-rails - 用于 nil:NilClass 的 link_thumbnailer 未定义方法“src”
- angular - 在 Angular 6 组件之间共享使用 HTTP GET 加载的数据
- tensorflow - 试图从冻结的 TF 模型中获取 openVino IR
- r - 如何让 R 安装所需的软件包?
- java - Android 图像按钮从自定义列表视图中拨号/调用 带有 NullPointerException 的错误