对于没有 .json 扩展名的 json 文件,nodejs 是否支持 "require"

Does nodejs support "require" for a json file without .json extension

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

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

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

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

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

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

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

相反,您只需要自己读取文件并进行解析。

这是 node.js 文档中的相关部分:

.js files are interpreted as JavaScript text files, and .json files are parsed as JSON text files. .node files are interpreted as compiled addon modules loaded with dlopen.

LOAD_AS_FILE(X)

  1. If X is a file, load X as JavaScript text. STOP
  2. If X.js is a file, load X.js as JavaScript text. STOP
  3. If X.json is a file, parse X.json to a JavaScript Object. STOP
  4. If X.node is a file, load X.node as binary addon. STOP

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

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