简体   繁体   English

尝试连接到节点 js 服务器时等待 localhost

[英]Waiting for localhost when trying to connect to node js server

when i run this , i should be able to get mysite at localhost:3000 .当我运行它时,我应该能够在 localhost:3000 获得 mysite 。 but when i go to localhost:3000 it is not loading.但是当我去 localhost:3000 它没有加载。 chrome is still showing waiting for localhost. chrome 仍然显示等待本地主机。 This is the code .这是代码。 It is a simple node js blog that uses mongo db.它是一个使用 mongo db 的简单 node js 博客。 I got it from this github https://github.com/pankajwp/node-js-blog我从这个 github https://github.com/pankajwp/node-js-blog得到它

This is the code for server.这是服务器的代码。 Please help i will add my mongodb credentials to mongoose.connect.请帮助我将我的 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);

Following thing is wrong以下是错误的

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

Right away after calling listen , app does not listen immediately to the specified port.立即调用listen ,应用程序不会立即侦听指定的端口。

The code should be like following代码应该如下所示

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

What is happening here, listening to a port is a asynchronous task.这里发生了什么,监听端口是一个异步任务。 It is accepting some callback to let you know, what is the status of your listening to the port.它正在接受一些回调,让您知道您侦听端口的状态。 If successful, then callback is called.如果成功,则调用回调。

What your code was doing is, whether the listening to port is success of not, it always prints Listening on localhost: xxxx .您的代码所做的是,无论侦听端口是否成功,它始终会打印Listening on localhost: xxxx

Example taken from directly Express Hello world .直接取自Express Hello world 的示例。

Try This:尝试这个:

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}`));

you can try with adding this code jsut after declaring your port number.您可以在声明您的端口号后尝试添加此代码。

app.use(bodyParser.json());

your updated code should looks like below and it should work on http://localhost:3000您更新后的代码应该如下所示,它应该可以在 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);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM