简体   繁体   English

语法错误:意外的令牌async()

[英]Syntax Error: Unexpected Token async()

I have been following this tutorial on using GraphQL and it has told me to write this block of code in my src/index.js file: 我一直在关注这个使用GraphQL教程,它告诉我写的代码块在我src/index.js文件:

const express = require('express');
const bodyParser = require('body-parser');
const {graphqlExpress, graphiqlExpress} = require('apollo-server-express');
const schema = require('./schema');

// 1
const connectMongo = require('./mongo-connector');

// 2
const start = async () => {
  // 3
  const mongo = await connectMongo();
  var app = express();
  app.use('/graphql', bodyParser.json(), graphqlExpress({
    context: {mongo}, // 4
    schema
  }));
  app.use('/graphiql', graphiqlExpress({
    endpointURL: '/graphql',
  }));

  const PORT = 3000;
  app.listen(PORT, () => {
    console.log(`Hackernews GraphQL server running on port ${PORT}.`)
  });
};

// 5
start();

Though when I try to run the code using: node ./src/index.js it gives me this error: 虽然当我尝试使用以下代码运行代码时: node ./src/index.js了我这个错误:

const start = async () => {
                    ^

SyntaxError: Unexpected token (
    at createScript (vm.js:56:10)
    at Object.runInThisContext (vm.js:97:10)
    at Module._compile (module.js:542:28)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Module.runMain (module.js:604:10)
    at run (bootstrap_node.js:389:7)
    at startup (bootstrap_node.js:149:9)

I've searched online and it seems that if might be caused by the node.js version from here but I've checked my noed.js version and it's 8.3.0 so it should be supported without having to use Babel if I'm not mistaken. 我已经在网上搜索过,看来这可能是由这里的node.js版本引起的,但是我检查了noed.js版本,它是8.3.0因此如果我不使用Babel,应该支持它。没看错。

Here is my package.json file: 这是我的package.json文件:

{
  "name": "graphql-js-tutorial",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "apollo-server-express": "^1.1.2",
    "body-parser": "^1.17.2",
    "express": "^4.15.4",
    "graphql": "^0.11.2",
    "graphql-tools": "^1.2.2",
    "mongodb": "^2.2.31"
  }
}

async functions are only available since node 8.3 异步功能仅在节点8.3起可用

your code is equivalent to (without async/await) 您的代码等同于(没有异步/等待)

const start = () => {
    return connectMongo().then(mongo => {
        var app = express();
        app.use('/graphql', bodyParser.json(), graphqlExpress({
            context: {mongo}, // 4
            schema
        }));
        app.use('/graphiql', graphiqlExpress({
            endpointURL: '/graphql',
        }));

        const PORT = 3000;
        app.listen(PORT, () => {
            console.log(`Hackernews GraphQL server running on port ${PORT}.`)
        });
        return;
    });
};

start your app by the command node yourAppFile -harmony ! 通过命令node yourAppFile -harmony启动您的应用程序! async function is available in the harmony mode under Node7.+ 在Node7下的harmony模式下,可以使用async功能。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM