我想在我的JavaScript代码中包含几个JSON文件,这些文件与我的JavaScript源文件位于同一目录中。
如果我想包含另一个JavaScript文件,我可以简单地使用require。 现在我使用readFileSync和__dirname来获取JSON,我认为这是一种丑陋的方式。
是否有类似的require使我能够加载JSON文件?
我想在我的JavaScript代码中包含几个JSON文件,这些文件与我的JavaScript源文件位于同一目录中。
如果我想包含另一个JavaScript文件,我可以简单地使用require。 现在我使用readFileSync和__dirname来获取JSON,我认为这是一种丑陋的方式。
是否有类似的require使我能够加载JSON文件?
当前回答
你可以使用node.js v14 experimental json modules标志来导入json文件。详情请点击这里
file.js
import data from './folder/file.json' assert { type: 'json' }
export default {
foo () {
console.log(data)
}
}
用node——experimental-json-modules file。js来调用
其他回答
JSON文件不需要显式的exports语句。您不需要导出它来作为Javascript文件使用。
因此,对于有效的JSON文档,可以使用require。
data.json
{
"name": "Freddie Mercury"
}
main.js
var obj = require('data.json');
console.log(obj.name);
//Freddie Mercury
其中最常见的两种
第一种方法:
let jsonData = require('./JsonFile.json')
let jsonData = require('./JsonFile') //如果我们省略.json也可以
OR
import jsonData from ('./JsonFile.json')
第二种方式:
1)同步
const fs = require('fs')
let jsonData = JSON.parse(fs.readFileSync('JsonFile.json', 'utf-8'))
2)异步
const fs = require('fs')
let jsonData = {}
fs.readFile('JsonFile.json', 'utf-8', (err, data) => {
if (err) throw err
jsonData = JSON.parse(data)
})
注意: 1)如果我们JsonFile。如果json被改变了,我们不会得到新的数据,即使我们重新运行require('./JsonFile.json')
2) fs。readFile或fs。readFileSync将总是重新读取文件,并获得更改
你可以使用node.js v14 experimental json modules标志来导入json文件。详情请点击这里
file.js
import data from './folder/file.json' assert { type: 'json' }
export default {
foo () {
console.log(data)
}
}
用node——experimental-json-modules file。js来调用
如果你正在使用typescript,你可以添加你的tsconfig。为json添加一个名为resolveJsonModule: true的新字段,然后你可以像这样导入任何.json文件的所有信息:
Import * as jsonfile from "./path/to/json"
您可以使用模块来创建一个require。
import { createRequire } from 'module'
const require = createRequire(import.meta.url)
const foo = require('./foo.json')