【问题标题】:Waiting for localhost when trying to connect to node js server尝试连接到节点 js 服务器时等待 localhost
【发布时间】:2020-03-23 04:15:28
【问题描述】:

当我运行它时,我应该能够在 localhost:3000 获得 mysite。但是当我去 localhost:3000 它没有加载。 chrome 仍然显示等待本地主机。这是代码。这是一个使用 mongo db 的简单 node js 博客。我是从这个 github https://github.com/pankajwp/node-js-blog

得到的

这是服务器的代码。请帮忙 我会将我的 mongodb 凭据添加到 mongoose.connect。

var express = require('express');
var app = express();

var port = process.env.PORT || 3000;
var expressLayouts = require('express-ejs-layouts');
var mongoose = require('mongoose');
mongoose.connect('');


var Schema = mongoose.Schema;

app.use('/assests',express.static(__dirname + '/public'));
app.use(expressLayouts);

app.use((req, res, next) => {
        res.locals.baseUrl = req.baseUrl;
     next();
});

// by default express will look for static files inside the filder called views
app.set('view engine', 'ejs');


// Controllers
var pageController = require('./controllers/pageController');
var postController = require('./controllers/postController');
var adminController = require('./controllers/adminController');
var randomController = require('./controllers/randomController');

randomController(app);
adminController(app, Schema, mongoose);
postController(app, Schema, mongoose);
pageController(app, Schema, mongoose);

// Listen
app.listen(port);
console.log('Listening on localhost:'+ port);

【问题讨论】:

  • 请帮忙。这是非常紧急的。我需要让这个工作,我是节点 js 的新手

标签: javascript node.js mongodb express mongoose


【解决方案1】:

下面的事情是错误的

// Listen
app.listen(port);
console.log('Listening on localhost:'+ port);

调用listen后,应用不会立即监听指定端口。

代码应如下所示

app.listen(port, function() {
    console.log(`Listening on localhost: ${port}!`);
})

这里发生了什么,监听一个端口是一个异步任务。它正在接受一些回调来让你知道,你监听端口的状态是什么。如果成功,则调用回调。

您的代码所做的是,监听端口是否成功,它总是打印Listening on localhost: xxxx

直接取自Express Hello world的示例。

【讨论】:

    【解决方案2】:

    试试这个:

    const express = require('express');
    const ejs = require('ejs');
    const expressLayouts = require('express-ejs-layouts');
    const mongoose = require('mongoose');
    
    const app = express();
    const port = process.env.PORT || 3000;
    
      //Create Object like this
      const Schema = new mongoose.Schema({
         //your properties name goes here like:
          name: {
             type:String
        }
       });
    
       app.use('/assests',express.static(__dirname + '/public'));
       app.use(expressLayouts);
    
        app.use((req, res, next) => {
          res.locals.baseUrl = req.baseUrl;
          next();
         });
    
    
       // by default express will look for static files inside the filder called views
         app.set('view engine', 'ejs');
    
    
     // Controllers
       var pageController = require('./controllers/pageController');
       var postController = require('./controllers/postController');
       var adminController = require('./controllers/adminController');
       var randomController = require('./controllers/randomController');
    
        randomController(app);
        adminController(app, Schema, mongoose);
        postController(app, Schema, mongoose);
        pageController(app, Schema, mongoose);
    
    //db connection
      mongoose
        .connect('url goes here, ({useUnifiedTopology: true, useNewUrlParser:true}))
        .then(() => console.log('MongoDB connected!!!'))
        .catch(err => console.log(err));
    
     app.listen(port, (req, res) => console.log(`Server is running at ${port}`));
    

    【讨论】:

    • ReferenceError: Schema 未在 Object. 中定义(C:\Users\RahulVk\Downloads\node-js-blog\node-js-blog-master\app.js:29: 26) 在 Module._compile (internal/modules/cjs/loader.js:1158:30) 在 Object.Module._extensions..js (internal/modules/cjs/loader.js:1178:10) 在 Module.load ( internal/modules/cjs/loader.js:1002:32) 在 Function.Module._load (internal/modules/cjs/loader.js:901:14) 在 Function.executeUserEntryPoint [as runMain] (internal/modules/run_main. js:74:12) 在 internal/main/run_main_module.js:18:47
    • 更新了!!添加了架构对象
    【解决方案3】:

    您可以在声明端口号后尝试添加此代码。

    app.use(bodyParser.json());
    

    您更新后的代码应该如下所示,它应该可以在 http://localhost:3000 上运行

    var express = require('express');
    var app = express();
    
    var port = process.env.PORT || 3000;
    app.use(bodyParser.json());
    var expressLayouts = require('express-ejs-layouts');
    var mongoose = require('mongoose');
    mongoose.connect('');
    
    
    var Schema = mongoose.Schema;
    
    app.use('/assests',express.static(__dirname + '/public'));
    app.use(expressLayouts);
    
    app.use((req, res, next) => {
        res.locals.baseUrl = req.baseUrl;
     next();
    });
    
    // by default express will look for static files inside the filder called views
    app.set('view engine', 'ejs');
    
    
    // Controllers
    var pageController = require('./controllers/pageController');
    var postController = require('./controllers/postController');
    var adminController = require('./controllers/adminController');
    var randomController = require('./controllers/randomController');
    
    randomController(app);
    adminController(app, Schema, mongoose);
    postController(app, Schema, mongoose);
    pageController(app, Schema, mongoose);
    
    // Listen
    app.listen(port);
    console.log('Listening on localhost:'+ port);
    

    【讨论】:

      猜你喜欢
      • 2018-10-07
      • 1970-01-01
      • 2021-07-03
      • 2022-01-27
      • 2014-03-27
      • 1970-01-01
      • 2015-05-20
      • 2020-01-22
      • 2016-03-01
      相关资源
      最近更新 更多