.json 不能写注释, 还需要严格的双引号
或者使用 .json5
// test.db[ // name {name: 1}]
// test.jsconst fs = require('fs');const vm = require('vm');const util = require('util')const format = console.log;const data = { sc: ''}vm.createContext(data);util.promisify(fs.readFile)('./test.db', 'utf8') .then(body => { vm.runInContext(`sc = ${body}`, data); // 它会运行未经信任的代码 format( data.sc) format(typeof data.sc) })
执行结果
>node test.js[ { name: 1 } ]object
json5
// test.json5[ { name: 1, // 这是名字 }]
// test.jsconst fs = require('fs');const JSON5 = require('json5')const { promisify} = require('util')const format = console.logpromisify(fs.readFile)('./test.json5', 'utf8') .then(body=>{ format( body) format(typeof body) format(JSON5.parse( body)) })