访问公用文件夹给我一个错误

时间:2016-09-02 16:04:11

标签: node.js

我是Nodejs的新手,我正在使用express关注Plurals的Noderalss课程。 我有以下代码:

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 start

这是我的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

1 个答案:

答案 0 :(得分: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'));假设您希望它查找的public目录在运行app.use()语句时相对于工作目录,因此您需要确保它是也是正确的,或者您需要在express.static()语句中设置绝对路径,这样您就不会依赖当前的工作目录。