2016-09-02 30 views
0

我是Nodejs的新手,我正在使用Express來關注Pluralsight的Nodejs課程。 我有以下代碼:訪問公用文件夾給我一個錯誤

var express = require('express'); 
var app = express(); 
var port = 5000; 

app.use(express.static('public')); 

app.get('/', function (req, res) { 
    res.send('Hello World'); 
}); 

app.get('/books', function (req, res) { 
    res.send('Hello Books'); 
}); 

app.listen(port, function (err) { 
    console.log('running server on port ' + port); 
}); 

然後在命令行我運行以下命令: $ NPM啓動

這是我的JSON文件:

{ 
    "name": "library", 
    "version": "1.0.0", 
    "description": "", 
    "main": "app.js", 
    "scripts": { 
    "test": "echo \"Error: no test specified\" && exit 1", 
    "start": "node app.js" 
    }, 
    "author": "", 
    "license": "ISC", 
    "dependencies": { 
    "express": "^4.14.0" 
    } 
} 

現在的問題我我有,當我從我的瀏覽器,我把:localhost:5000一切看起來很好。我看到了我的Hello World文本。但是當我試圖去公共文件夾如localhost:5000/css/style.css時,我得到以下錯誤信息。

Cannot GET /css/style.css 

這裏是我的文件夾結構 enter image description here

+3

可能是:*「但是,您提供給'express.static'函數的路徑與您啓動'node'過程的目錄相關。如果從另一個目錄運行express應用程序,則更安全使用你想要服務的目錄的絕對路徑:'app.use('/ static',express.static(__ dirname +'/ public'));'「* https://expressjs.com/en/starter /static-files.html –

+0

您的package.json文件旁邊是公共文件夾嗎? –

+0

向我們展示「public」文件夾的層次結構。如果你引用'/ css/style.css',那麼你需要'public/css/style.css'來存在'express.static('public')'來找到它。 – jfriend00

回答

0

如果你想:

localhost:5000/css/style.css 

受送達:

app.use(express.static('public')); 

然後,你需要確保style.css位於:

public/css/style.css 

其中public/css/style.css相對於當前工作目錄進行評估。

你不要透露你的文件層次,但如果localhost:5000/css/style.css不工作,則顯然style.css不在正確的public/css/style.css或您public目錄是不是在正確的位置。

app.use(express.static('public'));告訴express以查找相對於public目錄所請求的文件。所以/css/style.css的請求將在public/css/style.css處尋找。


此外,app.use(express.static('public'));假定當運行app.use()聲明,所以你需要可以確認,這也是正確的,你希望它看起來在public目錄相對於工作目錄,或者你需要把在express.static()語句中的絕對路徑,因此您不依賴於當前的工作目錄。

相關問題