node.js相对于文件

时间:2016-01-09 17:02:21

标签: javascript node.js

在我的node.js项目中,我使用log4js,我希望我的日志具有添加日志记录的文件的名称。所以我使用__filename,但它给了我绝对路径

var logger = log4js.getLogger(__filename)

所以它给我这样的日志:

[1999-01-01 00:00:00] [DEBUG] /Users/whatever/myproject/src/services/users something happened

但我希望路径相对于我的project / src文件夹。像这样:

[1999-01-01 00:00:00] [DEBUG] services/users something happened

实现这一目标的最佳方法是什么?

3 个答案:

答案 0 :(得分:31)

您可以使用path.relative

var relativePath = path.relative(process.cwd(), someFilePath);

答案 1 :(得分:2)

var root = '/Users/whatever/myproject/src/';

var filename = __filename.replace(root, '');

字符串replace将替换第一次出现,因此即使您有多次root模式,它也只会被替换一次。

答案 2 :(得分:0)

您可以将path.basename()__dirname__filename同时使用:

var path = require('path');
var here = path.basename(__dirname) + '/' + path.basename(__filename, '.js');

或者,如果你喜欢正则表达式,你可以这样做:

var here = /\/([^/]+\/[^/]+)\.js$/.exec(__filename)[1];