nodejs是否支持没有.json扩展名的json文件的“require”

时间:2015-11-17 06:21:14

标签: json node.js require

在节点5.0中有require的语法,它会将文件识别为没有.json扩展名的json吗?

例如,我希望能够使用这样的require语句读入.bowerrc文件(json文件)。

var bowerrc = require("./.bowerrc");

但节点抛出令牌错误,因为它认为它是javascript而不是json文件。

如果我暂时将.bowerrc更改为.bowerrc.json(以及文件名),那么一切都很好,所以我知道这就是发生的事情。

我看到有一个支持json!nameofile的浏览器的requirejs插件,但在节点中不起作用。

1 个答案:

答案 0 :(得分:4)

不,如果require()没有正确的文件扩展名,则无法将其视为JSON。

相反,您只需阅读文件并自行解析即可。

这里是node.js doc的相关部分:

  

.js文件被解释为JavaScript文本文件和.json文件   被解析为JSON文本文件。 .node文件被解释为已编译   用dlopen加载的插件模块。

     

LOAD_AS_FILE(X)

     
      
  1. 如果X是文件,请将X加载为JavaScript文本。 STOP
  2.   
  3. 如果X.js是文件,请将X.js作为JavaScript文本加载。 STOP
  4.   
  5. 如果X.json是一个文件,请将X.json解析为JavaScript对象。 STOP
  6.   
  7. 如果X.node是文件,请将X.node加载为二进制插件。 STOP
  8.   

您可以制作自己的JSON加载器:

function loadJSON(file) {
    var data = fs.readFileSync(file);
    return JSON.parse(data);        
}