【发布时间】:2018-02-17 18:29:18
【问题描述】:
您好,我正在尝试使用 socket.io 构建一个 MEAN 堆栈聊天应用程序,但我遇到了这个错误,我什至已经完成了 ng-build,但这最终无法解决我的错误
我正在攻击我的文件的代码,请有人帮忙看看到底是什么问题。
我的 app.js 看起来像这样:-
const path = require('path');
const express = require('express');
const ejs = require('ejs');
const favicon = require('serve-favicon');
const logger = require('morgan');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
var chat = require("./routes/chat");
var app = express();
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({'extended':'false'}));
app.use(express.static(path.join(__dirname, 'dist')));
app.use('/chat', chat);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
mongoose.Promise = global.Promise;
mongoose.connect('mongodb://localhost/mean-chat')
.then(()=>console.log('connection successful'))
.catch((err)=>console.log(err));
module.exports = app;
我的 chat.js 看起来像这样
var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var app = express();
var io = require('socket.io')(server);
var server = require('http').createServer(app);
server.listen(4000);
// socket io
io.on('connection', function (socket) {
console.log('User connected');
socket.on('disconnect', function() {
console.log('User disconnected');
});
socket.on('save-message', function (data) {
console.log(data);
io.emit('new-message', { message: data });
});
});
/* GET ALL CHATS */
router.get('/:room', function(req, res, next) {
Chat.find({ room: req.params.room }, function (err, chats) {
if (err) return next(err);
res.json(chats);
});
});
/* SAVE CHAT */
router.post('/', function(req, res, next) {
Chat.create(req.body, function (err, post) {
if (err) return next(err);
res.json(post);
});
});
router.get('/', function(req, res, next) {
res.send('Express REST API');
});
module.exports = router;
当我尝试点击 url localhost:3000 时,它会显示我的 UI,这是绝对正确的
当我尝试点击我的 url localhost:3000/chat 时,它会显示
express 聊天 api 是正确的。
但是当我尝试访问 URL localhost:3000/book 或 localhost:3000/chat/book 时,我遇到了这样的错误
错误:未指定默认引擎且未提供扩展名。 在新视图 (D:\edWiseChatApp\node_modules\express\lib\view.js:61:11) 在 Function.render (D:\edWiseChatApp\node_modules\express\lib\application.js:570:12) 在 ServerResponse.render (D:\edWiseChatApp\node_modules\express\lib\response.js:1008:7) 在 D:\edWiseChatApp\app.js:33:7 在 Layer.handle_error (D:\edWiseChatApp\node_modules\express\lib\router\layer.js:71:5) 在 trim_prefix (D:\edWiseChatApp\node_modules\express\lib\router\index.js:315:13) 在 D:\edWiseChatApp\node_modules\express\lib\router\index.js:284:7 在 Function.process_params (D:\edWiseChatApp\node_modules\express\lib\router\index.js:335:12) 在下一个 (D:\edWiseChatApp\node_modules\express\lib\router\index.js:275:10) 在 Layer.handle_error (D:\edWiseChatApp\node_modules\express\lib\router\layer.js:67:12) 在 trim_prefix (D:\edWiseChatApp\node_modules\express\lib\router\index.js:315:13) 在 D:\edWiseChatApp\node_modules\express\lib\router\index.js:284:7 在 Function.process_params (D:\edWiseChatApp\node_modules\express\lib\router\index.js:335:12) 在下一个 (D:\edWiseChatApp\node_modules\express\lib\router\index.js:275:10) 在 Layer.handle_error (D:\edWiseChatApp\node_modules\express\lib\router\layer.js:67:12) 在 trim_prefix (D:\edWiseChatApp\node_modules\express\lib\router\index.js:315:13)
请有人帮忙解决这个问题,我想把这个评估交给面试官
【问题讨论】:
标签: mean