无法打开config.json

时间:2016-03-29 09:07:58

标签: json node.js

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

错误:

/Users/jensgryspeert/Documents/STAGE/Raspberry Rest API/config/initializers/server.js:11
  if (err) throw err;
           ^

Error: ENOENT: no such file or directory, open '../config/config.json'
    at Error (native)

代码段的位置位于: config / initializers / server.js

config.json文件的位置在: config / config.json

我不明白为什么它找不到json配置文件。 还有一个额外的问题仅供参考。是否可以只需要('../ config.json');没有阅读FS套餐?

2 个答案:

答案 0 :(得分:3)

为了确保获取您的文件,您应该使用__dirname。此变量将具有当前js文件所在文件夹的绝对路径值,因此在您的情况下,server.js[absolutepathtoyourproject]/config/initializers/

因此,您可以使用节点path library

获得正确的路径
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);
});

如果它找不到文件,至少你有pathToJson变量来帮助你看看路径不好的原因。

关于你的第二个问题,有可能,并建议你避免阅读和解析文件的麻烦。您甚至可以将其存储在名为config.js的js文件中作为

var config = { /* your config here */ };

module.exports = config;

在server.js文件中,如果您具有相同的文件层次结构,则可以执行以下操作:

var config = require('../config.js');

答案 1 :(得分:0)

这样做。并且看到它有效。

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

或者你可以这样做。

var config = require('../config.json');
console.log(config);