首页 > 解决方案 > 为什么 app.use(fn, '/api/auth', require('./routes/auth.routes')) 错误?

问题描述

我是 Node.js 的新手。错误是什么以及如何解决?请帮助我错误代码+下面是我的代码:

app.use(fn, '/api/auth', require('./routes/auth.routes'))
ReferenceError: fn is not defined
at Object.<anonymous> (D:\Apps\app.js:6:9)
at Module._compile (module.js:653:30)
at Object.Module._extensions..js (module.js:664:10)
at Module.load (module.js:566:32)
at tryModuleLoad (module.js:506:12)
at Function.Module._load (module.js:498:3)
at Function.Module.runMain (module.js:694:10)
at startup (bootstrap_node.js:204:16)
at bootstrap_node.js:625:3



     const express = require('express')
     const config = require('config')
     const mongoose = require('mongoose')

     const app = express()
     app.use(fn, '/api/auth', require('./routes/auth.routes'))

     const PORT = config.get('port') || 5000

     async function start() {
         try{
            await mongoose.connect(config.get ('mongoUri'), {
                useNewUrlParser: true,
                useUnifiedTopology: true,
                useCreateIndex: true
            })
            app.listen(PORT, () => console.log('App worked'))
        } catch (e){
            console.log('Server Error', e.message)
            process.exit(code, 1)
        }
   }
   start()

试过了 app.use(fn: '/api/auth', require('./routes/auth.routes')),但是不行

标签: javascriptnode.js

解决方案


正确的调用app.use()采用第一个可选参数,该参数是表示路径或路径前缀的字符串,然后它采用任意数量的中间件函数引用。app.use() 此处的文档参考。

所以,你在做什么:

app.use(fn, '/api/auth', require('./routes/auth.routes'))

不是一种有效的调用方式app.use(),然后最重要的是,fn甚至没有定义这使其成为 ReferenceError (甚至不会运行)。

我不知道您从哪里想到使用您拥有的表格,但它可能应该是这样的:

app.use('/api/auth', require('./routes/auth.routes'))

推荐阅读