无法读取node.js中的config.json文件

时间:2018-01-06 11:25:42

标签: javascript node.js unit-testing mocha sinon

我正在编写一个单元测试用例,问题在链接How to stub/mock submodules of a require of nodejs using sinon

中提到

当我包含要求

 const index=require('./index.js');

里面有一个库需要

 const library= require('./library.js');

library.js文件有一个require,它读取config.json文件(这个配置文件也需要在index.js上面),如下所示

 const readConfig = require('read-config');
 const config = readConfig('./config.json');

我已尝试过多种方式,如上所述,但我失败了

  const stubs = {
'./library': function (response) {
    assert.equal(some, null);
    return 'Some ' + argument;
 },
   '../library1.js': {
    function(paths, opts){
      var config='./config.json'
      return config;
    }
  },
}

 const index=proxyquire('./index.js',stubs)

当我运行我的单元测试用例时,我仍然收到以下错误

      throw configNotFound(configPath);
        ^
ReadConfigError: Config file not found: ./config.json

我想知道代码的哪一部分我错过了代码抛出错误

我正在尝试编辑index.js以及使用以下代码读取配置的所有相关文件

var path = require('path');
var pathToJson = path.resolve(__dirname, '../config.json');

 // Load config
 var config = fs.readFile(pathToJson , 'utf8', function (err, data) {
  if (err) throw err;
  config = JSON.parse(data);
});

这里的挑战是我无法更改节点代码

1 个答案:

答案 0 :(得分:0)

您的问题很可能是路径解析。如果./config.json与您从(process.cwd())运行Node的位置相关,那么它就可以正常工作。如果它与您的库模块相关,那么您可以执行以下操作:

// Works for JS and JSON
const configPath = require.resolve('./config.json');

// Works in general
const configPath = require('path').join(__dirname, 'config.json');

// Then
const readConfig = require('read-config');
const config = readConfig(configPath);

如果不了解您的项目布局以及如何启动应用程序,情况就很难说。