我在本地主机上运行了一个连接服务器,在我的backbone应用程序中,如果我重新加载一个路由,比如localhost:8000/fun,服务器会返回"Cannot GET /fun"的错误信息,显然是因为/fun不存在。
不知何故,服务器需要知道要提供index.html/fun或其他内容。我实际上尝试过这样做,但是我得到了一些其他的错误。有人以前处理过这个问题吗?
TL;DR:无法获取/fun。
我在本地主机上运行了一个连接服务器,在我的backbone应用程序中,如果我重新加载一个路由,比如localhost:8000/fun,服务器会返回"Cannot GET /fun"的错误信息,显然是因为/fun不存在。
不知何故,服务器需要知道要提供index.html/fun或其他内容。我实际上尝试过这样做,但是我得到了一些其他的错误。有人以前处理过这个问题吗?
TL;DR:无法获取/fun。
你需要modRewrite:
npm install connect-modrewrite --save-dev
在你的Gruntfile中:
modRewrite = require('connect-modrewrite')
connect:
server:
options:
port: 8765
open: true
base: ['./']
middleware: (connect, options) ->
middlewares = []
middlewares.push(modRewrite(['^[^\\.]*$ /index.html [L]']))
options.base.forEach( (base) ->
middlewares.push(connect.static(base))
)
middlewares
原生JS:
connect: {
server: {
options: {
port: 8765,
open: true,
base: ['./'],
middleware: function(connect, options) {
var middlewares;
middlewares = [];
middlewares.push(modRewrite(['^[^\\.]*$ /index.html [L]']));
options.base.forEach(function(base) {
return middlewares.push(connect["static"](base));
});
return middlewares;
}
}
}
}
接受的答案不再有效(2015-10-20),因为连接项目结构发生了变化,connect.static 已经移动到它自己的包 'serve-static' 中。所以你需要根据以下方式来适应这个答案:
npm install serve-static --save-dev
在你的 Gruntfile.js 文件中要求它
var serveStatic = require('serve-static');
然后将中间件代码更改为以下内容:
middleware: function(connect, options) {
var middlewares;
middlewares = [];
middlewares.push( modRewrite( ['^[^\\.]*$ /index.html [L]'] ) );
options.base.forEach( function( base ) {
return middlewares.push( serveStatic( base ) );
});
return middlewares;
}