NodeJS难以使用Express.js提供静态内容

时间:2016-09-01 19:35:48

标签: javascript node.js express

我在Windows 10开发机器上运行了一个简单的NodeJS和Express服务器

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

app.use(express.static('app'));
app.use('/bower_components', express.static('bower_components'));

app.listen(3000, function () {
    console.log("Listening on :3000");
});

这很有效,但是当我尝试在我的Linux(Ubuntu 14.04)框中上传时,只有/app下面的文件才会被提供,而子文件夹中没有任何内容。

在linux机器上,我注意到我正在运行节点版本v0.10,所以我更新到v4.5.0。我的Windows机器运行v4.4.4

我知道它可能与权限有关,所以我尝试设置这些权限,但无济于事。

文件结构如下所示

├───api
├───app
│   ├───assets
│   │   ├───css
│   │   └───images
│   └───scripts
│       ├───auth
│       ├───directives
│       ├───filters
│       ├───home
│       ├───i18n
│       └───services
├───bower_components

有没有人遇到同样的问题?

1 个答案:

答案 0 :(得分:1)

我认为你把文件中的所有东西都放好了,所以只有问题,对于你想要的nodeJS服务来说,这可能是痛苦的,因为没有指定路径。

https://expressjs.com/en/starter/static-files.html

如果执行app.use(express.static('app'));,则app注入/目录(或极端情况下nodeJs安装的执行文件夹)。我唯一想到的是在express.static之前添加__dirname + '/app'app.use(__dirname + '/app', express.static('app'));

__dirname是模块范围内的nodeJS变量,包含当前正在执行的脚本所在目录的名称

如果这样做有所改变,请尝试将其与所有内容相匹配:What is the difference between __dirname and ./ in node.js?