在节点5.0中有require
的语法,它会将文件识别为没有.json扩展名的json吗?
例如,我希望能够使用这样的require语句读入.bowerrc文件(json文件)。
var bowerrc = require("./.bowerrc");
但节点抛出令牌错误,因为它认为它是javascript而不是json文件。
如果我暂时将.bowerrc更改为.bowerrc.json(以及文件名),那么一切都很好,所以我知道这就是发生的事情。
我看到有一个支持json!nameofile
的浏览器的requirejs插件,但在节点中不起作用。
答案 0 :(得分:4)
不,如果require()
没有正确的文件扩展名,则无法将其视为JSON。
相反,您只需阅读文件并自行解析即可。
这里是node.js doc的相关部分:
.js文件被解释为JavaScript文本文件和.json文件 被解析为JSON文本文件。 .node文件被解释为已编译 用dlopen加载的插件模块。
LOAD_AS_FILE(X)
- 如果X是文件,请将X加载为JavaScript文本。 STOP
- 如果X.js是文件,请将X.js作为JavaScript文本加载。 STOP
- 如果X.json是一个文件,请将X.json解析为JavaScript对象。 STOP
- 如果X.node是文件,请将X.node加载为二进制插件。 STOP
醇>
您可以制作自己的JSON加载器:
function loadJSON(file) {
var data = fs.readFileSync(file);
return JSON.parse(data);
}