账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    babel.js 在运行时 如果在await等地方未定义代码 报错位置不知道
    32
    0

    这是 es7 的代码段

    /**
     * 将抓取来的搜索出来的公众号信息(个体)保存到数据库
     * @param {*指定的关键词} mediaName
     * @param {*原始数据有关mediaPlatform} mp
     * @param {*抓包类型--属于公众号} paramUrl
     */
    export async function saveAndUpdateRecord (mediaName, mp, paramUrl) {
      let record = new Record()
      record.query = mediaName
      record.paramUrl = paramUrl
      record.jsonData = JSON.stringify(mp)
      const hash = crypto.createHash('sha256')
      record.hash = hash.update(record.jsonData).digest('hex')
      let _record = await Record.findOne({ query: mediaName, paramUrl: paramUrl })
      if (_record) {
        console.log(` - 更新: 关键词: ${_record.query} 修改成功`)
        _record = _.extend(record, _record)
        const data = await _record.save()
        return data
      } else {
        console.log(` - 插入: ${_record.query} 插入成功`) // 这里假装报错
        const data = await record.save()
        return data
      }
    }

    运行babel-node 命令后

    $ babel-node src/writeRecords.js

    出现报错

     - 更新: 关键词: 中大青年 修改成功
    (node:9684) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): TypeError: Cannot read property 'Symbol(Symbol.iterator)' of undefined
    (node:9684) [DEP0018] DeprecationWarning: Unhandled promise rejections are
    deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
    

    这样的报错信息实现太难知道哪行错了
    有没有babel没有装的插件可以检查出哪行报错之类的

    配置信息.babelrc.js

    {
      "presets": [
        "env"
      ],
      "plugins": [
        [
          "transform-runtime",
          {
            "helpers": false,
            "polyfill": false,
            "regenerator": true,
            "moduleName": "babel-runtime"
          }
        ]
      ]
    }
    

    package.json

    "devDependencies": {
        "babel-cli": "^6.26.0",
        "babel-core": "^6.26.0",
        "babel-eslint": "^8.0.2",
        "babel-plugin-transform-runtime": "^6.23.0",
        "babel-preset-env": "^1.6.1"
      },
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 晨尘缘 普通会员 1楼

      在Babel.js中,await语句会暂停当前的代码执行,等待外部代码的结果。如果在await语句中未定义代码,Babel.js会在该位置抛出错误。

      例如,如果你有一个函数foo(),并在其中使用了await,但是你没有在函数外部定义foo(),那么在foo()函数内部,Babel.js会抛出一个错误,告诉你foo()未定义。

      在你的代码中,await语句可能会在任何地方出现,包括在async函数中,或者在异步函数中。如果你不确定某个await语句的使用位置,你可以使用Babel的babel-source选项来生成源代码,然后在Babel的编译器中查看错误信息。

      例如,如果你有一个函数foo(),并在其中使用了await,并且你想要生成源代码,你可以使用以下命令:

      bash babel --out-dir out --source-maps --transform es6-async/await ./src

      这将会生成一个名为out的目录,其中包含了源代码。你可以打开这个目录,查看所有的await语句,然后根据错误信息来判断它们的使用位置。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部