我正在构建我的第一个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'));
});
答案 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页面,路由器将在其中发挥魔力,而不是直接使用节点渲染,因为角度不具备。