手动刷新404

时间:2018-06-11 13:28:45

标签: angular express routes http-status-code-404 angular2-router

我正在构建我的第一个MEAN应用程序,Angular 6. 0.2,Express 4.16.0

凭借Angular CLI和Express生成器

生成了文件

与MongoDB的连接完全正常运行,实际上,一切正常但手动刷新......

根据我已经看过的帖子,问题应该来自路由器(请记住我想使用Angular路由器)。

到目前为止,我的app.js文件有2条路线:

var indexRouter = require('./routes/index'); // Express generated
var apiRouter = require('./routes/book');

接下来......

app.use(express.static(path.join(__dirname, 'public'))); // Express generated
app.use(express.static(path.join(__dirname, 'dist/myProjectFolder')));
app.use(express.static(path.join(__dirname, 'dist/myProjectFolder')));

而且......

app.use('/', indexRouter); // Express generated
app.use('/api, apiRouter);

之后我有我的默认错误处理程序(Express生成)。

指数路线:

var express = require('express');
var router = express.Router();

router.get('/', function(req, res, next) {
    res.render('index', { title: 'Express' });
});

module.exports = router;

编辑01 - 现在在应用第一个建议的解决方案后出现“路径未定义”错误。

编辑02 - 由于建议的解决方案,问题已解决(请参阅评论)。但是router.get('/ ',function ...打破了对数据的访问(错误200)。如果你有相同的问题,只使用特定的问题,如router.get('/ poney',function。 ..不是/ (除非有人知道如何解决它)。

编辑3 - 经过进一步调查后,您可以使用

创建一个“神奇”的路由器
router.get(/^\/(?!api).*/, function(req, res) {
    req.sendFile(path.join(__dirname, '.. /path/to/your/index.html'));
});

1 个答案:

答案 0 :(得分:0)

将以下内容添加到路由器中:

O(1)

如果您有其他网址,则需要用户直接访问,例如管理员和登录屏幕添加以下内容:

router.get('/', function(req, res) {
    res.sendFile(path.join(__dirname, '../index.html')); // make sure index is accesed, in my example the node server would be in a server folder, so I need to go back a directorie with ../ where index.html can be hit.
});
router.get('/*', function(req, res) {
     res.sendFile(path.join(__dirname, '../index.html'));
});

这个想法是你将用户发送到angulars index.html页面,路由器将在其中发挥魔力,而不是直接使用节点渲染,因为角度不具备。