我有一个带有快速服务器的node.js后端。我想默认所有获取请求到角度应用程序并使用角度路由来处理请求。快速服务器将处理来自角度应用程序的所有api调用。我在顶部设置了所有api调用的快速路由,并在底部设置了以下代码:
app.get('*', function(req, res){
res.sendfile('index.html', { root: path.resolve(__dirname + '/../../app') });
});
这适用于默认主页,但如果有一个虚假文件夹则效果不佳。 E.g。
www.example.com (works)
www.example.com/product1 (works)
www.example.com/products/1 (does not work)
我的HTML文件使用以下结构引用脚本:
<script src="scripts/app.js"></script>
当我尝试使用虚假文件夹(www.example.com/products/1)访问网址时,出现以下错误: 找不到文件'products / scripts / app.js'
尝试使用网址中的文件夹来查找文件。有办法解决这个问题吗?或者我应该使用express来路由而不是angular?
答案 0 :(得分:3)
尝试将<base href="/">
添加到HTML文档的头部。这为我解决了同样的问题。
答案 1 :(得分:2)
angular-express-seed非常适合让你开始使用棱角分明和表达。
app.js
app.get('*', routes.index);
routes.js
exports.index = function(req, res){
res.render('index');
};
您不必使用玉。您可以使用任何您想要的模板引擎或仅使用静态html文件。请注意,res.sendfile
不会缓存文件,因此不应在生产中使用。种子还有一个示例来显示客户端和服务器之间的json通信。
exports.name = function (req, res) {
res.json({
name: 'Bob'
});
};
如果您使用快递进行路由,您将失去单页应用程序的感觉。
答案 2 :(得分:0)
在HTML
中为脚本(和CSS文件)提供绝对路径<script src="/scripts/app.js"></script>