2

我有一个带有快速服务器的 node.js 后端。我想默认所有获取角度应用程序的请求并使用角度路由来处理请求。Express 服务器将处理来自 Angular 应用程序的所有 api 调用。我已经设置了我的快速路由,顶部有所有 api 调用,底部有以下代码:

app.get('*', function(req, res){
    res.sendfile('index.html', { root: path.resolve(__dirname + '/../../app') });
});

这对于默认主页非常有用,但如果有一个人造文件夹,它就不能很好地工作。例如

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) 访问 url 时,出现以下错误:找不到文件 'products/scripts/app.js'</p>

它正在尝试使用 url 中的文件夹来查找文件。有没有办法解决这个问题?或者我应该使用快递而不是角度?

4

3 回答 3

3

尝试添加<base href="/">到 HTML 文档的头部。这为我解决了同样的问题。

于 2013-03-18T20:19:32.823 回答
2

angular-express-seed非常适合让您开始使用 angular 和 express 。

应用程序.js

app.get('*', routes.index);

路由.js

exports.index = function(req, res){
  res.render('index');
};

你不必使用玉。你可以使用任何你想要的模板引擎或者只是静态的 html 文件。请注意,res.sendfile它不会缓存文件,也不应该在生产中使用。种子还有一个例子来展示客户端和服务器之间的 json 通信。

exports.name = function (req, res) {
  res.json({
    name: 'Bob'
  });
};

如果您使用 express 进行路由,您将失去单页应用程序的感觉。

于 2013-03-02T20:58:52.787 回答
0

为脚本(和 CSS 文件)提供 HTML 中的绝对路径

<script src="/scripts/app.js"></script>
于 2013-06-10T09:51:44.340 回答