我在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
有没有人遇到同样的问题?
答案 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?