在视图中看不到我的html文件

时间:2017-03-18 21:36:11

标签: angularjs node.js express mean-stack

我正在尝试运行一个基本的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”

有什么想法吗?

1 个答案:

答案 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