TypeError:app.listen不是函数NODEJS

ghhkc1vu  于 12个月前  发布在  Node.js
关注(0)|答案(3)|浏览(100)

我不明白为什么我看到这个错误。
我的app.js文件

const express = require("express");
const morgan = require('morgan');
const app = express();

const tourRouter = require('./routers/tourRouter');
const userRouter = require('./routers/userRouter');

app.use(express.json());
app.use(morgan('dev'));
app.use((req,res,next)=>{
    req.RequestTime = new Date().toISOString();
    next();
});

app.use('/api/v1/tours',tourRouter);
app.use('/api/v1/users',userRouter);
const port = 3000;
app.listen(port, () => {
    console.log(`App running on port ${port}`);
});

这个运行起来没有问题,但是当我切断时,

const port = 3000;
app.listen(port, () => {
    console.log(`App running on port ${port}`);
});

这部分我和app.js一起写文件夹导出。module = app;然后创建server.js文件

const app = require('./app');
const port = 3000;
app.listen(port, () => {
    console.log(`App running on port ${port}`);
});

这不起作用,我得到
TypeError:app.listen不是函数

u3r8eeie

u3r8eeie1#

正如@Dickens A S评论的那样,您需要将object: app: instance of express分配给file: "app.js"中的module.exports
阅读文档:Node.js:module.exports
许多人希望他们的模块是某个类的示例。为此,将所需的导出对象分配给module. exports。
file:app.js中添加以下内容:
module.exports = app;

qhhrdooz

qhhrdooz2#

为此,您必须导出模块,以便添加:

module.exports = app

app.js文件中。

klh5stk1

klh5stk13#

我遇到了同样的问题,我不得不在require语句中通过解构来解决它。
当然,在app.js的底部:

module.exports = { app }

然后在server.js的顶部:

const { app } = require('./app')

当我试图像这样要求它时,我得到了相同的TypeError

const app = require('./app')

相关问题