使用 vm 加载文件中的数据到变量里面
.json 不能写注释, 还需要严格的双引号
或者使用 .json5
// test.db
[
// name
{name: 1}
]
// test.js
const 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.js
const fs = require('fs');
const JSON5 = require('json5')
const {
promisify
} = require('util')
const format = console.log
promisify(fs.readFile)('./test.json5', 'utf8')
.then(body=>{
format( body)
format(typeof body)
format(JSON5.parse( body))
})