听不是一个函数

Posted

技术标签:

【中文标题】听不是一个函数【英文标题】:Listen is not a function 【发布时间】:2017-08-17 18:25:55 【问题描述】:

我有这个代码,它说这个错误

TypeError: app.listen 不是函数

 at mongoose.connect (C:\wamp\www\curso-mean2\index.js:14:7)
 at C:\wamp\www\curso-mean2\node_modules\mongoose\lib\connection.js:292:19
 at open (C:\wamp\www\curso-mean2\node_modules\mongoose\lib\connection.js:576:17)

[nodemon] 应用程序崩溃 - 启动前等待文件更改...

app.js的内容:

'use strict'

var express = require('express'); // objeto express dentro de variable app
var bodyParser = require('body-parser');

var app = express();

// cargar rutas
//configurar body parser
//es necesario para body parse y convierte a objetos Json los datos que llegan por http:
app.use(bodyParser.urlencoded(extended:false));
app.use(bodyParser.json());

//configurar cabeceras http

//rutas base

//exportamos el modulo , podemos utilizar express dentro de ficheros que incluyan app
module.exports = app;

index.js的内容:

'use strict'

var mongoose = require('mongoose');
var app = require('./app');
//configurar puerto por defecto
var port = process.env.PORT || 3977;

mongoose.connect('mongodb://localhost:27017/curso_mean2', (err,res) => 
    if (err)
        throw err;
    else
        console.log("La base de datos esta funcionando muy bien...");
        //a escuchar
        app.listen(port, function () 
            console.log("Servidor del api rest de musica escuchando en http://localhost");
        );
     //else
);

你能帮帮我吗?我是初学者,不知道怎么回事

【问题讨论】:

请看这里:***.com/questions/17696801/… 如果你 console.log(app) 怎么办? @Paolo 这并不能解释为什么他的 app.listen 不起作用 当我执行这段代码时,一切都很好。您是否已发布所有代码?你安装了所有的 npm 模块了吗? 尝试添加js 扩展。 var app = require('./app.js'); 我把所有的代码都放在了这个问题中。因为这很奇怪。我试过 put app.js,没有任何变化。 【参考方案1】:

底层 MongoDB 驱动程序已弃用其当前的连接字符串解析器。因为这是一个重大变化,他们添加了 useNewUrlParser 标志以允许用户回退到旧的解析器,所以你应该使用类似这样的东西:

mongoose.connect('mongodb://localhost:27017/curso_mean2',  useNewUrlParser: true, useUnifiedTopology: true )

如果你想捕捉错误,我建议你使用 promises 和 catch 方法:

mongoose.connect('mongodb://localhost:27017/curso_mean2',  useNewUrlParser: true, useUnifiedTopology: true )
 .then(()=>
       console.log("La base de datos esta funcionando muy bien...");

       app.listen(port,function () 
           console.log("Servidor del api rest de musica escuchando en http://localhost");
       );

 )
 .catch( err => console.log(err) );

Here you can found references from connection to MongoDB

【讨论】:

以上是关于听不是一个函数的主要内容,如果未能解决你的问题,请参考以下文章

python如何检听声卡是不是有声音进来

019:函数:我的地盘听我的

如何将用户定义的函数应用于变量,就像内置函数一样?

听justjavac大神live前端的入门与进阶小笔记

区块链知识| 哈希算法

理解函数式编程