7

假设我有这个目录结构

/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)中工作是否正确?

还是我错过了什么?谢谢

4

1 回答 1

15

正如Dan D.所说,fs.readdirprocess.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

于 2013-04-25T16:05:49.163 回答