我正在使用带有 Express 的 nodeJS 服务器来为我的 AngularJS 应用程序提供服务。当我使用 angularJS 默认路由(hashbangs)时,这一切都很好,但现在我正在尝试激活 html5 模式。
我正在像这样激活 html5mode:
$locationProvider.html5Mode(true).hashPrefix('!');
这就是我的 nodeJSapp.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 一起工作?谢谢。