错误处理程序无法与nuxtjs一起在Express中正常工作

时间:2019-01-25 08:36:05

标签: express nuxt.js

我在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()

1 个答案:

答案 0 :(得分:1)

在没有亲自测试此代码的情况下,我的自定义错误处理程序也遇到了类似的问题,并意识到有一次我删除了'numpy.ndarray' object has no attribute 'to_pydatetime' 参数,但是它失败了。不能说它将解决此问题,因为您遇到关于next的错误。我翻阅了几次,发现由于使用res函数而犯的一些错误。

Error Handling Guide可能会提供一些帮助,如果您仔细查看的话,但更具体地说,我对async的评论位于标题 Writing error handlers

我想说的可能是箭头函数,但是我不明白为什么这会破坏逻辑。