javascript - 数组中的函数在js中为空

标签 javascript node.js require

我在用数组编写函数时遇到问题。

这是发生了什么:

config.js

module.exports = {
  transformers: {
    reshape: {
      parser: 'sugarml',
      plugins: [
        // require('reshape-custom-elements')({defaultTag: 'span'})
        function () {
          console.log(arguments)
        }
      ]
    }
  }
}

然后在 Node 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]

最佳答案

您不能序列化 JSON 中的函数。来自 MDN:

If undefined, a function, or a symbol is encountered during conversion it is either omitted (when it is found in an object) or censored to null (when it is found in an array). JSON.stringify can also just return undefined when passing in "pure" values like JSON.stringify(function(){}) or JSON.stringify(undefined).

source

我会质疑在 JSON 中存储这样的配置,但如果你真的需要你可以考虑像 serialize-javascript 这样的东西它将处理函数的序列化。

关于javascript - 数组中的函数在js中为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41434650/

相关文章:

javascript - 如何从数据库中检索值到动态文本框

javascript - JavaScript 是一种类型安全的语言吗?

node.js - 在 JS 中使用 Cloud Functions 将数据设置到 Firestore

node.js - 如何为我在 openshift 上的现有应用程序升级 NodeJS?

node.js - Azure 上的 Nodejs 控制台日志的输出在哪里

javascript - 当我使用 "require"时,Webstorm 无法识别我的全局函数

javascript - RequireJs 优化器忽略插件

javascript - WebPack:需要将 javascript 文件置于全局范围内

javascript - 通过 Node.js 将客户端表单输入发送到服务器端数据库查询并将结果返回给客户端

javascript - 如何在文本框值中输入当前日期并显示我的附加数据