【问题标题】:Unexpected Token async ()意外的令牌异步()
【发布时间】:2017-11-22 12:16:15
【问题描述】:

我遇到了一个奇怪的问题,因为我的代码在 Ubuntu 和 Windows 机器上运行良好,但在 Centos 服务器上却失败了。我有相同的节点版本 8.9.1 和相同的 npm 5.5.1 和相同的sails 1.0.0.41(全局和本地)。一切正常,除了在我得到的 Centos 机器上

const makeRequest = async () => {
                          ^
SyntaxError: Unexpected token (

带有指向第一个括号的箭头。我目前唯一怀疑的是我的 N 版本管理没有正确更新节点。运行 node -v 报告 8.9.1。这是异步代码的简化版:

const makeRequest = async () => {
  try{
    const user = await sails.models.user.findOne({id: user_id});
    return Promise.resolve(user);
    }
  catch(error){
    sails.log.error('error getting data', error);
  }
}

return makeRequest().then(out => {
  return Promise.resolve(out);
});

关于如何解决此错误的任何建议?

【问题讨论】:

    标签: node.js async-await sails.js


    【解决方案1】:

    代码中缺少}。检查下面

    const makeRequest = async() => {
      try {
        const user = await sails.models.user.findOne({
          id: user_id
        });
        return Promise.resolve(user);
      } catch (error) {
        sails.log.error('error getting data', error);
      }
    } // -> Its misssing in your code
    return makeRequest().then(out => {
      return Promise.resolve(out);
    });

    已编辑

    OP 的回应

    问题在于版本管理。

    node -v 给了我 8.9.1 sudo node -v 给了我 6.11

    解决方案是为我的用户(而不是 root)chown 文件夹, 并在没有 sudo 的情况下运行应用程序。 NVM 然后正常工作。 接受另一个答案,因为我的代码中有错误。

    【讨论】:

    • 这是真的,不幸的是,这是我的简化示例代码,而不是我的实际代码,对您的答案进行了投票并编辑了我的问题以包括这个缺少的右括号。
    • 你在使用 nvm 吗?
    • 是的,它更好,值得推荐。安装后,您可以在安装 8.9.1 后使用 nvm alias default 8.9.1 设置默认版本
    • 尝试只使用 async 运行简单的代码并等待 const fs = require('fs'); const makeRequest = async () => { const user = await fs.readFileSync('./package.json') } return makeRequest().then(out => { return Promise.resolve(out); });
    • 我已经缩小了问题的范围,console.log(process.version) 通过节点 -v 或哪个节点返回 8.9.1 显示 6.11 事件。这似乎是一个节点版本管理问题。
    【解决方案2】:

    问题在于版本管理。

    node -v 给了我 8.9.1 sudo node -v 给了我 6.11

    解决方案是为我的用户(而不是 root)chown 文件夹,并在没有 sudo 的情况下运行应用程序。 NVM 然后正常工作。接受另一个答案,因为我的代码中有错误。

    【讨论】:

      【解决方案3】:

      有类似的问题,

      我也尝试过 sudo npm install,首先导致以下错误, 并导致异步意外令牌错误。

      npm WARN checkPermissions Missing write access to /home/mohanbabu/node_modules
      npm WARN enoent ENOENT: no such file or directory, open '/home/mohanbabu/package.json'
      npm WARN mohanbabu No description
      npm WARN mohanbabu No repository field.
      npm WARN mohanbabu No README data
      npm WARN mohanbabu No license field.
      npm ERR! path /home/mohanbabu/node_modules
      npm ERR! code EACCES
      npm ERR! errno -13
      npm ERR! syscall access
      npm ERR! Error: EACCES: permission denied, access '/home/mohanbabu/node_modules'
      npm ERR!  { Error: EACCES: permission denied, access '/home/mohanbabu/node_modules'
      npm ERR!   stack: 'Error: EACCES: permission denied, access \'/home/mohanbabu/node_modules\'',
      npm ERR!   errno: -13,
      npm ERR!   code: 'EACCES',
      npm ERR!   syscall: 'access',
      npm ERR!   path: '/home/mohanbabu/node_modules' }
      npm ERR!
      npm ERR! Please try running this command again as root/Administrator.
      npm ERR! A complete log of this run can be found in:
      npm ERR!     /home/mohanbabu/.npm/_logs/2019-10-13T16_51_12_932Z-debug.log
      

      (异步 () => { ^ 语法错误:意外的标记 ( 在 createScript (vm.js:56:10) 在 Object.runInThisContext (vm.js:97:10) 在 Module._compile (module.js:549:28) 在 Object.Module._extensions..js (module.js:586:10) 在 Module.load (module.js:494:32) 在 tryModuleLoad (module.js:453:12) 在 Function.Module._load (module.js:445:3) 在 Module.runMain (module.js:611:10) 运行时(bootstrap_node.js:394:7) 启动时 (bootstrap_node.js:160:9)

      1. 删除包锁并运行 npm install 是解决方法。(不带 sudo)
      2. 检查您的节点版本
      3. 运行 js 脚本(用于我的项目 npm start)

      【讨论】:

        猜你喜欢
        • 2018-01-02
        • 1970-01-01
        • 2020-12-04
        • 2016-08-15
        • 1970-01-01
        • 2018-02-02
        • 2018-08-17
        • 2018-10-21
        • 2017-12-29
        相关资源
        最近更新 更多