使用 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))
  })
posted @ 2018-04-11 13:58  Ajanuw  阅读(715)  评论(0编辑  收藏  举报