如何使用Node获取JS对象(例如var obj = {a: 1, b: 2}
)并创建包含该对象的文件?
例如,以下作品:
var fs = require('fs')
fs.writeFile('./temp.js', 'var obj = {a: 1, b: 2}', function(err) {
if(err) console.log(err)
// creates a file containing: var obj = {a: 1, b: 2}
})
但这不起作用:
var obj = {a: 1, b: 2}
fs.writeFile('./temp.js', obj, function(err) {
if(err) console.log(err)
// creates a file containing: [object Object]
})
更新:JSON.stringify()
将创建一个JSON对象(即{"a":1,"b":2}
),而不是Javascript对象(即{a:1,b:2}
)
答案 0 :(得分:6)
感谢Stephan Bijzitter为link
我的问题可以这样解决:
var fs = require('fs')
var util = require('util')
var obj = {a: 1, b: 2}
fs.writeFileSync('./temp.js', 'var obj = ' + util.inspect(obj) , 'utf-8')
这会写入包含以下内容的文件:var obj = { a: 1, b: 2 }
答案 1 :(得分:2)
您需要stringify您的对象:
var obj = {a: 1, b: 2}
fs.writeFile('./temp.js', JSON.stringify(obj), function(err) {
if(err) console.log(err)
})
答案 2 :(得分:1)
这是因为writeFile
需要的论据。
https://nodejs.org/api/fs.html#fs_fs_writefile_file_data_options_callback
它希望数据为<String> | <Buffer> | <Uint8Array>
所以你的第一个例子是有效的,因为它是一个字符串。
为了完成第二项工作,只需使用JSON.stringify(obj)
;
喜欢这个
fs.writeFile('file.txt', JSON.stringify(obj), callback)
希望这有帮助。
答案 3 :(得分:0)
使用JSON.stringify()
var obj = {a: 1, b: 2}
fs.writeFile('./temp.js', JSON.stringify(obj), function(err) {
if(err) console.log(err)
// creates a file containing: [object Object]
})
答案 4 :(得分:0)
const fs = require('fs')
const util = require('util')
const obj = {a: 1, b: 2}
fs.writeFileSync(
'./temp.js',
util.formatWithOptions({compact: false}, 'var obj = %o', obj),
'utf-8'
)
格式化输出:
// ./temp.js
var obj = {
a: 1,
b: 2
}