这是我的index.js 文件:
const express = require('express');
const mongoose = require('mongoose');
const Post = require('./models/Post');
const keys = require('./config/keys');
const path = require('path');
mongoose.connect(keys.mongoURI);
const app = express();
app.use(express.static(path.join(__dirname, '../react-app/build')));
app.get('/', (req, res) => {
res.sendFile(path.join(__dirname, '../react-app/build',
'index.html'));
});
app.get('/posts', (req, res) => {
Post.find({}, (err, posts) => {
if(err) {
console.log(err);
res.sendStatus(500);
} else {
res.send(posts)
}
})
});
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => console.log(`App listening on port ${PORT}`));
我已经将我的 React 前端构建到了 path.join 中指定的位置。但是,如果我使用app.use(express.static(...))
,如果我使用任何路径,它总是会从我的构建中返回index.html。
我希望在到达“/posts”端点时看到 posts 对象,但它不起作用,并且如果没有快速静态,我无法让构建服务正常工作。
编辑: 我尝试在“/”处理程序中进行控制台日志记录,但它也没有记录任何内容。当我完全删除 app.use 行时,一切都正常了。有些教程使用了这种方法,为什么不起作用?
最佳答案
所以试试这个:
const express = require('express');
const mongoose = require('mongoose');
const Post = require('./models/Post');
const keys = require('./config/keys');
const path = require('path');
mongoose.connect(keys.mongoURI);
const app = express();
app.use(express.static(path.join(__dirname, '../react-app/build')));
app.get('/posts', (req, res) => {
Post.find({}, (err, posts) => {
if(err) {
console.log(err);
res.sendStatus(500);
} else {
res.send(posts)
}
})
});
app.get('/', (req, res) => {
res.sendFile(path.join(__dirname, '../react-app/build',
'index.html'));
});
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => console.log(`App listening on port ${PORT}`));
关于javascript - 使用express.static时会忽略其他端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50220977/