您好我正在尝试使用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绝对正确
当我尝试点击我的网址localhost:3000 / chat时显示
表达聊天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)
请帮助解决这个问题,我想把这个评估给面试官答案 0 :(得分:0)
在错误处理程序中,您正在渲染一个onError视图。 您必须设置一个视图引擎来渲染您的视图。
app.set('view engine', 'ejs')
此外,您还可以设置视图目录。
app.set('views', './viewsDirectory')