NodeJS readdir并需要相对路径

时间:2012-11-21 07:45:13

标签: node.js module

假设我有这个目录结构

/Project
   /node_modules
      /SomeModule
         bar.js
   /config
      /file.json
   foo.js

-

foo.js:
require('bar');

-

bar.js:
fs.readdir('./config'); // returns ['file.json']
var file = require('../../../config/file.json');

是否正在包含readdir从文件中工作(foo.js)并且需要调用它的文件(bar.js)吗?

或者我错过了什么? 谢谢

1 个答案:

答案 0 :(得分:10)

Dan D.表达时,fs.readdir使用process.cwd()作为起点,而require()使用__dirname。如果你愿意,你总是可以从一个路径解析到另一个路径,获得绝对路径都会以相同的方式解释,如下所示:

var path = require('path');
route = path.resolve(process.cwd(), route);

这样,如果使用__dirname作为起始点,它将忽略process.cwd(),否则它将使用它来生成完整路径。

例如,假设process.cwd()/home/usr/node/

  • 如果route./directory,则会/home/usr/node/directory
  • 如果route/home/usr/node/directory,则会保留原样

我希望它适合你:D