【发布时间】:2020-03-17 17:59:06
【问题描述】:
我用 Express 和 React 构建了一个应用程序,它有 GET 和 POST 路由,可以在本地完美运行。我已经通过 Heroku 进行了部署,但没有任何效果了!我只是收到一个 404 错误。我尝试创建一个不起作用的 static.json 文件,尽管我没有使用 Create-React-App 来设置它。
这是我的 index.js:
const mongoose = require('mongoose')
const bodyParser = require('body-parser')
const app = express()
const router = require('./config/router')
const { port, dbURI } = require('./config/environment')
const errorHandler = require('./lib/errorHandler')
const logger = require('./lib/logger')
app.use(express.static(`${__dirname}/public`))
app.use(express.static(`${__dirname}/dist`))
mongoose.connect(dbURI, { useNewURLParser: true, useCreateIndex: true})
app.use(bodyParser.json())
app.use(logger)
app.use('/api', router)
app.use(errorHandler)
app.listen(port, () => console.log(`Up and running on port ${port}`))
module.exports = app
路由器.js
const vacancies = require('../controllers/vacancies')
router.route('/vacancies')
.get(vacancies.index)
.post(vacancies.create)
router.route('/vacancies/:id')
.get(vacancies.show)
module.exports = router
控制器:
//tested in insomnia - works
function indexRoute(req, res, next) {
Vacancy
.find(req.query)
.then(vacancies => res.status(200).json(vacancies))
.catch(next)
}
//tested in insomnia - works
function showRoute(req, res, next) {
Vacancy
.findById(req.params.id)
.then(vacancy => res.status(200).json(vacancy))
.catch(next)
}
//tested in insomnia - works
function createRoute(req, res) {
Vacancy
.create(req.body)
.then(vacancy => res.status(201).json(vacancy))
.catch(err => res.status(422).json(err))
}
module.exports = {
index: indexRoute,
show: showRoute,
create: createRoute
}
最后是环境文件:
const port = process.env.PORT || 4000
const dbURI = process.env.MONGODB_URI || `mongodb://localhost/dxw-job-board-${process.env.NODE_ENV || 'dev'}`
module.exports = { port, dbURI }
这是针对一项工作的代码测试,我真的很想担心它不能正常工作 - 任何帮助都将不胜感激!
【问题讨论】:
-
感谢您的帮助!!事实证明,这与我的代码关系不大,更多的是因为我没有在 heroku 中创建一个 mongo db 作为插件......
标签: node.js reactjs express heroku routing