我在编写数组函数时遇到了麻烦。
以下是发生的事情:
config.js
module.exports = {
transformers: {
reshape: {
parser: 'sugarml',
plugins: [
// require('reshape-custom-elements')({defaultTag: 'span'})
function () {
console.log(arguments)
}
]
}
}
}
然后在节点REPL
中 var config = require('./config.js')
console.log(JSON.stringify(config.transformers, null, 2))
输出
{
"reshape": {
"parser": "sugarml",
"plugins": [
null
]
},
"uglify-js": {
"mangle": {
"toplevel": true
}
},
"rollup": {
"format": "es",
"plugins": {
"rollup-plugin-node-resolve": {},
"rollup-plugin-commonjs": {}
}
}
}
我很困惑为什么plugins
是[null]
答案 0 :(得分:4)
您无法在JSON中序列化函数。来自MDN:
如果未定义,在转换过程中遇到函数或符号,则省略(在对象中找到它)或删除为null(在数组中找到它时)。传入时,JSON.stringify也可以返回undefined" pure"值如JSON.stringify(function(){})或JSON.stringify(undefined)。
我会质疑在JSON中存储这样的配置,但是如果真的需要,你可以考虑使用serialize-javascript来处理函数序列化的东西。