尝试连接到Node js服务器时正在等待localhost



当我运行这个程序时,我应该能够在localhost:3000上获得mysite。但是当我转到localhost:3000时,它没有加载。chrome仍然显示在等待localhost。这就是代码。这是一个使用mongodb的简单节点js博客。我从这个github得到的https://github.com/pankajwp/node-js-blog

这是服务器的代码。请帮忙我将把我的mongodb凭据添加到mongose.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);

以下内容是错误的

// 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

示例取自Direct Express Hello world。

试试这个:

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

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

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

最新更新