angular2与节点路由问题

时间:2017-09-08 08:35:41

标签: node.js angular angular2-routing

我目前正在使用angular2,为了部署目的,我必须使用node作为我的服务器。我被困在路由中

成功案例:

如果我使用 routerLink 导航到页面,那么它可以很好地为他们提供服务

路线是:http://localhost:8080/sign-in ---工作正常

失败情景: 如果我在地址栏中手动输入与上述相同的地址,则无法加载页面

,但它坚持说应用程序加载是index.html和其他路由无法正常工作

index.js

const express = require('express');
const app = express();
var path = require("path");



app.use(express.static(__dirname + '/dist'));


app.get('/[^\.]+$', function(req, res) {
  console.log(__dirname+'/src/index.html')
  res.sendFile(path.join(__dirname+'/src/index.html'))
});
app.listen(process.env.PORT || 8080);

问题在于节点服务器无法提供页面,但我希望路由甚至可以从地址栏工作,任何帮助都将受到高度赞赏 该应用适用于生产模式角度4

2 个答案:

答案 0 :(得分:1)

在您的角度项目中:

不要伪造用 ng build 来构建项目。之后,您将看到一个新目录: dist 该目录包含您的角度项目。

在您的节点项目中:

您必须使用以下内容发送角度项目中的所有路线:

// Send all other requests to the Angular app
app.get('*', (req, res) => {
    res.sendFile(path.join(__dirname, 'yourprojectangular/dist/index.html'));
});

答案 1 :(得分:0)

尝试将HashLocationStrategy用作LocationStrategy:

import { HashLocationStrategy, LocationStrategy } from '@angular/common';

@NgModule({
    // ...
    providers: [{provide: LocationStrategy, useClass: HashLocationStrategy}],
    // ...
})
export class AppModule {}