我在Nuxtjs
中使用expressjs
作为中间件,在处理快速服务器部分的错误时遇到了问题。
浏览器转到“ localhost:3000”时,将引发res.status is not a function
错误。当我评论该代码块时,一切都很好,我无法处理未捕获的服务器错误...
有什么想法吗?
import dotenv from 'dotenv'
dotenv.config({ silent: process.env.NODE_ENV === 'production', path: 'server/.env' })
import express from 'express'
import { ready } from 'consola'
import { Nuxt, Builder } from 'nuxt'
import cors from 'cors'
import { json, urlencoded } from 'body-parser'
import cookieParser from 'cookie-parser'
import passport from 'passport'
import './utils/auth'
import router from './routes'
const app = express()
app.use(json({ limit: '50mb' }))
app.use(urlencoded({ limit: '50mb', extended: true }))
app.use(cookieParser())
app.use(cors())
app.use(passport.initialize())
app.use('/api', router)
app.use('/api/*', (req, res) => {
res.status(404).end()
})
// error handlers
// it is problematic
// app.use((err, req, res) => {
// res.status(err.status || 500).end()
// })
let config = require('../nuxt.config.js')
config.dev = !(process.env.NODE_ENV === 'production')
async function start() {
const nuxt = new Nuxt(config)
if (config.dev) {
const builder = new Builder(nuxt)
await builder.build()
}
app.use(nuxt.render)
const host = process.env.HOST || '127.0.0.1'
const port = process.env.PORT || 3000
app.set('port', port)
app.listen(port, host)
ready({
message: `Server listening on http://${host}:${port}`,
badge: true,
})
}
start()
答案 0 :(得分:1)
在没有亲自测试此代码的情况下,我的自定义错误处理程序也遇到了类似的问题,并意识到有一次我删除了'numpy.ndarray' object has no attribute 'to_pydatetime'
参数,但是它失败了。不能说它将解决此问题,因为您遇到关于next
的错误。我翻阅了几次,发现由于使用res
函数而犯的一些错误。
Error Handling Guide可能会提供一些帮助,如果您仔细查看的话,但更具体地说,我对async
的评论位于标题 Writing error handlers
我想说的可能是箭头函数,但是我不明白为什么这会破坏逻辑。