2013-08-06 17 views
34

我的应用程序的结构是:怎么上去的文件夹层次使用__dirname

/app 
    /css 
    /js 
    .. 
/script 
    /server.js 

我试图用__dirname指向/ app文件夹使用

app.use(express.static(__dirname + '/app')); 

时,我真的不知道在网上搜索什么,请帮助。

+1

为什么downvote?我认为这个问题是合法的。 –

回答

32

,如果你在server.js是,那么你的意思是

app.use(express.static(__dirname + '/../app')); 
+3

我在express.js文件中,'/../'没有翻译,它显示'current_directory_path /../ app'作为结果,找不到文件...任何想法为什么? – Babar

+0

你在做什么? –

+0

我在Ubuntu上,同样的语法在其他地方工作,但它不能在express.js文件中工作。 – Babar

0

__dirname只是一个字符串,你可以在上面做字符串操作。

app.use(express.static(__dirname.substring(0, __dirname.indexOf("\\routes") + '\app')); 

我会说实话,我用了一个不同的目的:

res.sendFile('./uploads/' + req.params.id + '/' + req.params.filename, {"root": __dirname.substring(0, __dirname.indexOf("\\routes"))}); 

所以,你可能与/工作VS \一点。

12

您可以使用path模块。

路径模块提供了用于处理文件和目录路径的实用程序。

const path = require('path'); 

app.use(express.static(path.join(__dirname, '..', 'app'))); 
+0

请给你的答案添加简短的解释。 –

0

我做了一个简单的解决方案,但它的作品。每当你需要这个文件夹的访问其他地方在子文件夹或路线的代码,你需要注入公用文件夹变量

var publicFolder = __dirname + '/public/'; 
config.public_folder = publicFolder; 

然后:在启动服务器脚本JS 您可以添加以下。并像这样使用它:

res.sendFile(config.public_folder+'unsubscribed-success.html');