使用express提供Angular 2/4代码

时间:2017-04-27 22:53:30

标签: angular express

在角度1中我能够为前端和后端都有一个项目,因为我可以使用快速功能来提供前端代码

.groupby.rolling

这种方法有一个错误,因为目前使用angular 4快速启动种子,index.html不在根前端文件夹中,而是在根前端文件夹中的src。所以为了解释我尝试过:

app.use('/frontEnd', express.static('frontend'));

那"工作"但是当你拉起app.use('/frontEnd', express.static('frontend/src')); 时,它会中断。

问题:解决这个问题的方法是什么?

替代问题:如果这个问题不再可用,1。有没有办法为两端都有一个项目或2.是否正确的程序只是让两边分开项目

1 个答案:

答案 0 :(得分:0)

由于使用了History API,Express需要捕获所有请求并提供index.html然后让Angular处理路由。

因此,您应在Express应用中使用的代码段为:

// Include the path module
include path from 'path'

// Specify your static path
app.use('/assets', express.static(path.join(__dirname, 'frontend/src/assets')));

// Then catch all requests made to http://localhost:8080/frontEnd
app.get('/frontEnd/*', (req, res, next) => {
  res.sendFile(path.join(__dirname, 'frontend/src/index.html'));
});

现在,当您要加载静态此类图像,脚本等时,路径/assets将从frontend/src/assets加载静态。如果您未指定资产路径,则每个资产请求都将返回index.html!

此外,当你要刺激时,请考虑server-side rendering。 :)