Я использую nodeJS-сервер с Express для обслуживания моего приложения AngularJS. Все это прекрасно работает, когда я использую маршруты angularJS по умолчанию (hashbangs), но теперь я пытаюсь активировать режим html5.
Я активирую html5mode следующим образом:
$locationProvider.html5Mode(true).hashPrefix('!');
И вот что выглядит мой файл nodeJS app.js
:
var path = require('path'),
express = require('express'),
app = express(),
routes = require(path.join(__dirname, 'routes'));
app.configure(function() {
app.use(express.logger('dev'));
app.use(express.compress());
app.use(express.methodOverride());
app.use(express.bodyParser());
app.use(app.router);
app.all("/*", function(req, res, next) {
res.sendfile("index.html", { root: __dirname + "/../app" });
});
app.use(express.errorHandler({
dumpExceptions: true,
showStack: true
}));
});
Однако теперь это все запросы, как мой index.html
, и поэтому я получаю следующую ошибку от requireJS:
Uncaught SyntaxError: Unexpected token <
Я попытался добавить следующее к моему nodeJS app.js
, чтобы он правильно обслуживал мои ресурсы:
app.use("/js", express.static(__dirname + "/../app/js"));
app.use("/img", express.static(__dirname + "/../app/img"));
app.use("/css", express.static(__dirname + "/../app/css"));
app.use("/partials", express.static(__dirname + "/../app/partials"));
но все равно не повезло.
Я также попытался заменить оператор app.all
на:
app.use(function(req, res) {
// Use res.sendfile, as it streams instead of reading the file into memory.
res.sendfile(__dirname + '/../app/index.html');
});
но это тоже не сработало. Что я могу сделать, чтобы заставить angularJS html5mode работать с nodeJS и Express? Спасибо.