手动刷新时为 404



我正在构建我的第一个 MEAN 应用程序 Angular 6。 0.2, 快递 4.16.0

由于Angular CLI和快速生成器,文件已生成

与MongoDB的连接完美运行,实际上,一切都在工作,但是手动刷新...

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

到目前为止,我的应用程序.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);

之后,我有了默认的错误处理程序(快速生成(。

索引路线:

var express = require('express');
var router = express.Router();
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
module.exports = router;

EDIT 01 — 现在在应用第一个建议的解决方案后出现"未定义路径"错误。

EDIT 02 — 由于建议的解决方案,问题已解决(另请参阅注释(。但是 router.get('/', function...中断对数据的访问(错误 200(。如果您有相同的问题,请仅使用特定的问题,例如router.get('/poney',函数...不是/(除非有人知道如何修复它(。

编辑3 — 经过进一步调查,您可以使用"神奇"路由器

router.get(/^/(?!api).*/, function(req, res) {
req.sendFile(path.join(__dirname, '.. /path/to/your/index.html'));
});

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

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'));
});

ifo 您还有其他需要用户直接访问的 URL,例如管理员和登录屏幕添加以下内容:

router.get('/login', function(req, res) {
res.sendFile(path.join(__dirname, '../index.html'));
});
router.get('/admin', function(req, res) {
res.sendFile(path.join(__dirname, '../index.html'));
});

这个想法是,您将用户发送到 angulars index.html路由器将在其中发挥其魔力的页面,而不是直接使用 node 渲染,而 whitch 无法使用 angular。

最新更新