我想在我的JavaScript代码中包含几个JSON文件,这些文件与我的JavaScript源文件位于同一目录中。
如果我想包含另一个JavaScript文件,我可以简单地使用require。 现在我使用readFileSync和__dirname来获取JSON,我认为这是一种丑陋的方式。
是否有类似的require使我能够加载JSON文件?
我想在我的JavaScript代码中包含几个JSON文件,这些文件与我的JavaScript源文件位于同一目录中。
如果我想包含另一个JavaScript文件,我可以简单地使用require。 现在我使用readFileSync和__dirname来获取JSON,我认为这是一种丑陋的方式。
是否有类似的require使我能够加载JSON文件?
当前回答
您可以使用模块来创建一个require。
import { createRequire } from 'module'
const require = createRequire(import.meta.url)
const foo = require('./foo.json')
其他回答
你甚至可以在不指定. JSON扩展名的情况下使用JSON的require。 它将允许您将文件扩展名更改为.js,而无需对导入进行任何更改。
假设我们有。/myJsonFile。Json在同一目录下。
const data = require('./myJsonFile')
如果在未来你会改变。/myJsonFile。./myJsonFile.js导入过程中没有任何改变。
不。使用readFile或readFileSync(仅在启动时使用后者)。
或者使用现有的库
中信
或者把你的配置写在js文件中,而不是json文件
module.exports = {
// json
}
如果你正在使用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')
你可以使用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来调用