我正在尝试运行一个基本的MEAN应用程序。我的应用程序没有Angular部分。 但是当我包含Angular时,我无法看到“view”文件夹中的HTML页面。
这是我的服务器:
var express=require('express');
var path=require('path');
var bodyParser=require('body-parser');
var index=require('./routes/index');
var tasks=require('./routes/tasks');
var port=3000;
var app=express();
/*View engine*/
app.set('views',path.join(__dirname, 'views'));
app.set('view engine','ejs');
app.engine('html',require('ejs').renderFile);
/*View static folder*/
app.use(express.static(path.join(__dirname, 'client')));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use('/',index);
app.use('/api',tasks);
app.listen(port, function(){
console.log('The application is running on port '+port);
});
这是我在“routes”目录下索引的路线:
var express=require('express');
var router=express.Router();
router.get('/',function(req, res, next){
res.render('index.html');
})
module.exports=router;
我的Angular代码位于client / app目录中。
我在终端的myapp / client目录中输入npm start
。
我得到“不能得到/”,在终端,我看到“404 GET /index.html”
有什么想法吗?
答案 0 :(得分:3)
这意味着当您打开根路由(/
uri)时,它将呈现index.html
文件:
router.get('/',function(req, res, next){
res.render('index.html');
});
这意味着您的视图文件(在您的问题index.html
文件中)位于views
文件夹中:
app.set('views',path.join(__dirname, 'views'));
如果您希望EJS呈现index.html,请将index.html
文件放入views
文件夹(而不是client
文件夹)。
直接打开您的应用:http://localhost:3000/
附:如果你想这样打开index.html:http://localhost:3000/index.html
执行以下操作:
确保您的routes/index.js
有此内容:
const
express = require('express'),
router = express.Router();
const renderViewFile = (filename) => (req, res) => res.render(filename);
router.get('/', renderViewFile('index.html'));
router.get('/index.html', renderViewFile('index.html'));
module.exports = router;
或:put index.html file into client folder and it will be served as static file