【发布时间】:2016-04-18 02:46:29
【问题描述】:
所以我已经阅读了该主题的几乎所有 SO 答案/问题,但我仍然有很多问题。
首先,问题:
我有一个启用了 html5 的 AngularJS 应用,所以我可以去掉“#”号。
$locationProvider.html5Mode({ enabled: true, requireBase: true });
$locationProvider.hashPrefix('!');
这是我的 index.html 中的重要部分:
<!DOCTYPE html>
<html ng-app="application" ng-controller="ApplicationController as app">
<head>
<meta name="fragment" content="!">
<title>LivingRoomArt</title>
<meta charset="UTF-8">
<base href="/index.html" />
我正在与使用 express 的 NodeJS 服务器通信:
router.route('/events')
.post(authController.isAuthenticated, eventController.postEvent)
.get(eventController.getEvents);
// Register all our routes with /api
app.use('/api', router);
// Start the server
app.listen(process.env.PORT || 5000);
所以,常见的问题:
重新加载后,我从服务器收到 404。我在这里得到了这个概念,到处都是建议的解决方案:
// This route deals enables HTML5Mode by forwarding missing files to the index.html
app.all('/*', function(req, res) {
res.sendfile('index.html');
});
});
问题是,我的服务器上没有 index.html 文件,也没有 我想在我的服务器上复制它。
那么我如何告诉 Node 正确处理请求而不在我的服务器上存储 html 文件?
如果有帮助,我将在 Heroku 上托管 Node 应用程序。
【问题讨论】:
-
所以你有一个客户端服务器和一个 API 服务器,对吧? 404 错误在客户端服务器上处理?
-
嗯,现在无处可去 :) 但我可以在客户端处理它,是的。我有一个 API 服务器和一个静态服务器用于我的客户端(html、js 等)
-
然后呢?我需要访问子视图并在那里进行 AJAX 调用。
-
你怎么没有索引? ng-app 将如何加载?你肯定有一个起点,为什么不使用它呢?
res.sendFile('file'); // res.render('file'); -
好吧,阅读问题。我的前端(Angular)在单独的静态服务器上,NodeJS 应用程序在不同的服务器上运行(托管在 heroku 上)。我不提供静态文件。我的起点是一个 index.html 文件,它只是让 Ajax 调用一个 REST Api。
标签: javascript angularjs node.js html heroku