我想在我的JavaScript代码中包含几个JSON文件,这些文件与我的JavaScript源文件位于同一目录中。
如果我想包含另一个JavaScript文件,我可以简单地使用require。 现在我使用readFileSync和__dirname来获取JSON,我认为这是一种丑陋的方式。
是否有类似的require使我能够加载JSON文件?
我想在我的JavaScript代码中包含几个JSON文件,这些文件与我的JavaScript源文件位于同一目录中。
如果我想包含另一个JavaScript文件,我可以简单地使用require。 现在我使用readFileSync和__dirname来获取JSON,我认为这是一种丑陋的方式。
是否有类似的require使我能够加载JSON文件?
当前回答
从节点v0.5开始。是的,你可以需要你的JSON,就像你需要一个js文件。
var someObject = require('./somefile.json')
在ES6:
import someObject from './somefile.json'
其他回答
从节点v0.5开始。是的,你可以需要你的JSON,就像你需要一个js文件。
var someObject = require('./somefile.json')
在ES6:
import someObject from './somefile.json'
您可以使用模块来创建一个require。
import { createRequire } from 'module'
const require = createRequire(import.meta.url)
const foo = require('./foo.json')
不。使用readFile或readFileSync(仅在启动时使用后者)。
或者使用现有的库
中信
或者把你的配置写在js文件中,而不是json文件
module.exports = {
// json
}
JSON文件不需要显式的exports语句。您不需要导出它来作为Javascript文件使用。
因此,对于有效的JSON文档,可以使用require。
data.json
{
"name": "Freddie Mercury"
}
main.js
var obj = require('data.json');
console.log(obj.name);
//Freddie Mercury
一个漂亮的非缓存异步一行,用于节点15模块:
import { readFile } from 'fs/promises';
const data = await readFile('{{ path }}').then(json => JSON.parse(json)).catch(() => null);