NodeJS readdir并需要相对路径

eSi*_*oll 6 module node.js

假设我有这个目录结构

/Project
   /node_modules
      /SomeModule
         bar.js
   /config
      /file.json
   foo.js
Run Code Online (Sandbox Code Playgroud)

-

foo.js:
require('bar');
Run Code Online (Sandbox Code Playgroud)

-

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

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

或者我错过了什么?谢谢

Mar*_*ema 13

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

var path = require('path');
route = path.resolve(process.cwd(), route);
Run Code Online (Sandbox Code Playgroud)

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

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

  • 如果route./directory,它将成为/home/usr/node/directory
  • 如果route/home/usr/node/directory,它将保持原样

我希望它适合你:D

  • 这段代码很难遵循。“route”在哪里定义?您有更好的方式来表达 `fs.readdir(path.join(__dirname, './path/', cb)` 吗? (2认同)