node.js我的配置文件在哪里?

时间:2013-05-11 22:55:55

标签: node.js

$ node run.js
[Sat May 11 2013 19:13:06 GMT-0400 (EDT)] ERROR { [Error: Cannot find module './app.yaml'] code: 'MODULE_NOT_FOUND' }
env = development
{}
env = development
{ redis: { port: 6379, host: '127.0.0.1', password: '', db: 1, options: {} } }
[ '.npmignore',
  'app.yaml',
  'config',
  'example',
  'freq.js',
  'node_modules',
  'run.js',
  'test.js',
  'whereami.js' ]

下面输出node.js代码

var fs = require('fs')

fs.readdir('.', function(err, files) {
        console.log(files);
});

var config = require('yaml-config');
var env = 'development';

var settings = config.readConfig('./app.yaml');
// path from your app root without slash
console.log('env = %s', env);
console.log(settings);

settings = config.readConfig('/Users/shawn/dev/node.js/example/app.yaml');
console.log('env = %s', env);
console.log(settings);
布兰登,公平点。我正在使用npm页面中的示例。我简化了代码并结合了我的文件系统检查。

1 个答案:

答案 0 :(得分:1)

过去我遇到过使用require()和相对路径动态“加载”配置文件的模块的问题。我在Mac OS X上只遇到过这些问题,而且从来没有在我的个人Ubuntu机器上。我不在Windows中进行node.js开发,所以我不能说那个环境。

我遇到的问题是调用require()函数的module loads relative。以下是您可以轻松解决该问题的方法:

var settings = config.readConfig(require.resolve('./app.yaml'));

您可以使用path.relative一起破解某些内容,以测试传递相对路径是否也可以解决问题。该路径应该与yaml-config模块的位置相关,并且很可能类似于../../../src/app.yaml,这取决于项目的结构与yaml-config的lib结构相比。

如果你想玩相关的东西,它会看起来像这样(编辑:下面的固定括号):

var relative = path.relative(require.resolve('yaml-config'), './app.yaml');
var settings = config.readConfig(relative);