我有一個寧靜的快遞服務+骨幹客戶端pushState的像這樣(在public/
客戶端代碼)啓用的目錄結構節點快遞路由的sendfile失敗取決於文件的位置
app.js
lib/routes.js
-- public/
-- index.html
我成立了/public
到是靜態目錄app.configure
:
app.use(express.static(__dirname + '/public'));
如果該索引是第一次訪問這個已經工作了蝙蝠。
然後,當我直接訪問主頁以外的路線時,我確保重定向到index.html
。這工作完全正常的app.js
,但如果我試圖把這個lib/routes.js
我得到Forbidden錯誤:
從app.js
正常工作:
app.get('*', function(req, res) {
res.sendfile(__dirname + '/public/index.html');
});
從lib/routes.js
:
res.sendfile(__dirname + '../public/index.html');
給我:
Error: Forbidden
at SendStream.error (/Users/*****/Sites/myproject/node_modules/express/node_modules/send/lib/send.js:145:16)
at SendStream.pipe (/Users/*****/Sites/myproject/node_modules/express/node_modules/send/lib/send.js:307:39)
at ServerResponse.res.sendfile (/Users/*****/Sites/myproject/node_modules/express/lib/response.js:345:8)
at /Users/*****/Sites/myproject/lib/routes.js:8:7
at callbacks (/Users/*****/Sites/myproject/node_modules/express/lib/router/index.js:164:37)
at param (/Users/*****/Sites/myproject/node_modules/express/lib/router/index.js:138:11)
at pass (/Users/*****/Sites/myproject/node_modules/express/lib/router/index.js:145:5)
at Router._dispatch (/Users/*****/Sites/myproject/node_modules/express/lib/router/index.js:173:5)
at Object.router (/Users/*****/Sites/myproject/node_modules/express/lib/router/index.js:33:10)
at next (/Users/*****/Sites/myproject/node_modules/express/node_modules/connect/lib/proto.js:193:15)
如果我只是嘗試:
res.sendfile('/public/index.html');
它無法找到該文件,我得到:
Error: ENOENT, stat '/public/index.html'
總之我如何使用sendFile
和lib/routes.js
在public/index.html
傳遞沒有得到一個禁錯誤?
[Express res.sendfile throwing forbidden error]可能重複(http://stackoverflow.com/questions/14594121/express-res-sendfile-throwing-forbidden-error) – Joe
這是因爲'中的相對路徑。 。/公/ index.html'。看到這個笨蛋。 – Joe