【问题标题】:Unexpected identifier - JS Node意外的标识符 - JS 节点
【发布时间】:2018-09-28 01:51:23
【问题描述】:

我在 .js 文件中有下一个代码

const { User } = require('../models')

module.exports = {
  async register (req, res) {
    try {
      const user = await User.create(req.body)
      res.send(user.toJSON())
    } catch (err) {
      res.status(400).send({
        error: 'Email de cuenta ya esta en uso'
      })
    }
  }
}

当我运行我的节点应用程序时,我得到了错误

  async register (req, res) {
        ^^^^^^^^ 
SyntaxError: Unexpected identifier

我无法意识到我错过了什么!

【问题讨论】:

  • @jfriend00 你能回答澄清评论的帖子吗?
  • 你运行的是什么版本的 node.js?
  • 节点:v6.9.5 NPM:v3.10.10
  • 根据这张图表node.green,节点版本6.x 似乎根本不支持async。您需要 node v7.10 或更高版本。

标签: javascript node.js function asynchronous


【解决方案1】:
module.exports = {
  register:  async (req, res) => {
    try {
      const user = await User.create(req.body)
      res.send(user.toJSON())
    } catch (err) {
      res.status(400).send({
        error: 'Email de cuenta ya esta en uso'
      })
    }
  }
}

如果你想使用一个类,使用相同的语法:

module.exports = class MyClass {
  async register(req, res) {
        try {
          const user = await User.create(req.body)
          res.send(user.toJSON())
        } catch (err) {
          res.status(400).send({
            error: 'Email de cuenta ya esta en uso'
          })
        }
  }

}

【讨论】:

  • 这是一种编写代码的新方法吗?因为我正在学习 Freecodecamp.org 的教程,他编写的代码就像我在帖子中写的那样
  • 添加说明 OP 正在尝试导出一个对象,这需要key: value 对,如上所示。
  • 那么,我上面写的代码没有办法工作吗?我这么说是因为 ESM6 等发生了一些变化。
  • 你可以像以前那样写,但你需要使用一个类。
  • 我像你一样编辑了我的代码,我收到以下错误Parsing error: unexpected token {在线register: async (req, res) {
【解决方案2】:

我已经解决了更新节点版本的问题 来自:v6.9.5 至:v8.12.0

我要卸载我的旧节点版本(它位于 c:/laragon/bin/node 上,左侧是从 c:/program files(x86)/nodejs 上的节点官方 msi 安装程序安装的)

感谢 cmets 上的 @jfriend00!

【讨论】:

    猜你喜欢
    • 2020-08-04
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    • 2017-06-19
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 1970-01-01
    相关资源
    最近更新 更多