我有一个类似'localhost:3000 / verify / a5d5sd'的网址,我已经发送到用户的电子邮件,点击此链接后,我正在使用param(a5d5sd)用于检查服务器和数据库(MongoDB)中的某些内容并返回带有对象的响应的链接,现在当在新选项卡上单击或打开链接时,我只看到来自服务器的响应,但没有看到来自我的HTML的响应Angular 2组件。
在我的Angular 2路由配置模块中,我确实配置了一个类似
的路由 {
path: 'verify/:id',
component: MyComponent
},
在此组件的ngOnInit上,我正在调用一个服务方法,该方法使用验证/:id 这样的网址生成GET http请求 param(:id)我使用@ angular / router中的ActivatedRoute来获取它,以便我可以发出请求。
为了解决这个问题,我建议使用以下代码供我的快递使用:
app.use(express.static(path.join(__dirname, 'client/dist')));
app.get('*', function(req, res) {
res.sendFile(__dirname + '/client/dist/index.html');
})
甚至尝试过:
app.all('*', function(req, res) {
res.sendFile(__dirname + '/client/dist/index.html');
})
此代码适用于直接导航(在搜索栏上粘贴网址),仅刷新 POST 和 PUT 请求但不使用 GET 请求来自服务器端的响应,当我直接访问URL或刷新页面时,DOM是用服务器响应编写的,但是没有HTML,任何帮助都将受到赞赏。
答案 0 :(得分:2)
定义所有路线后,添加index.html文件的路线
// Set your routes here
app.use('/api', api);
// Catch all other routes and return the index file
app.get('*', function(req, res) {
res.sendFile(path.join(__dirname, 'path/to/index.html')); //path from the root dir
});
这对我有用。 感谢