【发布时间】:2020-08-10 22:20:15
【问题描述】:
我正在尝试从邮递员发出发帖请求,但收到 404 错误:SyntaxError: Unexpected token n in JSON at position 4<br> &nbsp; &nbsp;at JSON.parse。
我添加了 Content-Type: application/json 标头并在原始选项卡中定义了 json 正文。
这是网址:http://localhost:8000/api/signup。
当我收到cannot GET /api/signup 时,我无法发出此帖子请求,也无法在浏览器中访问该应用程序。
我该如何解决这个问题?
控制器/user.js
const User = require('../models/user')
const { errorHandler } = require("../helpers/dbErrorHandler")
exports.signup = (req, res) => {
console.log("req.body", req.body)
// signs up new user
const user = new User(req.body)
user.save((err, user) => {
if(err) {
return res.status(400).json({
err: errorHandler(err)
})
}
res.json({
user
})
})
}
app.js
const express = require('express')
const mongoose = require('mongoose')
const morgan = require('morgan')
const bodyParser = require('body-parser')
const cookieParser = require('cookie-parser')
require('dotenv').config()
// import routes
const userRoutes = require('./routes/user')
// app
const app = express()
// connect db - first arg is url (specified in .env)
mongoose.connect(process.env.DATABASE, {
useNewUrlParser: true,
useCreateIndex: true
}).then(() => console.log('DB connected'))
// middlewares
app.use(morgan('dev'))
app.use(bodyParser.json())
// used to save users credentials
app.use(cookieParser())
// routes middleware
app.use('/api', userRoutes)
const port = process.env.PORT || 8000
app.listen(port, () => {
console.log(`Server is running on port ${port}`)
})
models/user.js
const mongoose = require('mongoose')
const crypto = require('crypto')
const uuidv1 = require('uuid/v1')
const userSchema = new mongoose.Schema ({
...
}, {timestamps: true})
userSchema.methods = {
encryptPassword: function(password) {
if (!password) return '';
// hashes password
try {
return crypto.createHmac('sha1', this.salt)
.update(password)
.digest('hex')
} catch (err) {
return ''
}
}
}
module.exports = mongoose.model("User", userSchema)
路由/user.js
const express = require('express')
const router = express.Router()
const { signup} = require('../controllers/user')
router.post('/signup', signup)
module.exports = router
【问题讨论】:
-
你可以试试 POST /api/user/signup
-
你能发布`./routes/user``文件的内容吗?
-
我在发布 /api/user/signup 时仍然收到相同的错误。我已经用代码更新了我的问题。 @Harshal
-
您是否尝试关闭邮递员并重新打开然后尝试新标签
-
你能检查一下服务器是否在运行吗?
标签: javascript node.js mongodb npm postman