我目前正在使用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
答案 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 {}