49

我的应用程序结构是:

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

我在使用时尝试使用 __dirname 指向 /app 文件夹

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

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

4

4 回答 4

49

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

app.use(express.static( __dirname + '/../app'));
于 2013-08-06T18:46:55.880 回答
21

您可以为此使用路径模块。

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

const path = require('path');

app.use(express.static(path.join(__dirname, '..', 'app')));
于 2016-08-16T01:04:33.423 回答
1

__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 \ 一点。

于 2015-11-16T23:34:06.963 回答
0

我做了一个简单的解决方案,但它有效。在您的启动服务器脚本 js 中,您可以添加以下内容:

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

然后,当您需要访问此文件夹时,在子文件夹或路由中的代码中的其他位置,您需要注入公用文件夹变量。并像这样使用它:

  res.sendFile(config.public_folder+'unsubscribed-success.html');
于 2016-12-08T20:18:42.617 回答