SyntaxError: неожиданный токен {при компиляции моего кода node.js - PullRequest
0 голосов
/ 14 октября 2019

Каждый раз, когда я пытаюсь запустить приложение grandstack neo4j graphql api, я получаю указанную ниже ошибку при каждом первом импорте.

PS C:\Users\grand-stack-starter-master\api> nodemon index.js
[nodemon] 1.19.1
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node index.js src/index.js`
C:\Users\grand-stack-starter-master\api\src\index.js:1
import { typeDefs } from "./graphql-schema";
       ^

SyntaxError: Unexpected token {
    at Module._compile (internal/modules/cjs/loader.js:723:23)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
[nodemon] app crashed - waiting for file changes before starting... 

Ниже приведен код моего узла grandstack node.js

import { typeDefs } from "./graphql-schema";
import { ApolloServer } from "apollo-server";
import { v1 as neo4j } from "neo4j-driver";
import { makeAugmentedSchema } from "neo4j-graphql-js";
import dotenv from "dotenv";

// set environment variables from ../.env
dotenv.config();


const schema = makeAugmentedSchema({
  typeDefs
});


const driver = neo4j.driver(
  process.env.NEO4J_URI || "bolt://localhost:7687",
  neo4j.auth.basic(
    process.env.NEO4J_USER || "neo4j",
    process.env.NEO4J_PASSWORD || "xxxx"
  )
);


const server = new ApolloServer({
  context: { driver },
  schema: schema
});

server.listen(process.env.GRAPHQL_LISTEN_PORT, "0.0.0.0").then(({ url }) => {
  console.log(`GraphQL API ready at ${url}`);
});

Я получаю эту ошибку для каждого оператора импорта. Если я удаляю проблемный импорт из кода (например: import {typeDefs} из "./graphql-schema";), то я получаю ту же ошибку со следующим импортом, как показано ниже

import { ApolloServer } from "apollo-server";
       ^

SyntaxError: Unexpected token {
    at Module._compile (internal/modules/cjs/loader.js:723:23)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
[nodemon] app crashed - waiting for file changes before starting...

Может кто-нибудь пожалуйстапомогите мне определить, где это не так

1 Ответ

0 голосов
/ 14 октября 2019

Похоже, что-то не так с вашим package.json.

Когда вы запускаете API, я вижу эту команду:

[nodemon] starting `node index.js src/index.js`

То есть вы не используете babel для переноса кодаи, вероятно, поэтому ваш импорт не работает. Вы должны использовать package.json в grand-stack-starter (загруженном с веб-сайта), который вызывает правильную команду для запуска сервера API с поддержкой babel.

"start": "./node_modules/.bin/nodemon --exec babel-node src/index.js"

Как вы можете видеть эту командуиспользует babel-node для переноса вашего кода с помощью babel, это добавляет поддержку для ваших импортов, которые теперь должны работать должным образом, и вы можете запускать API только при запуске npm. Если вы используете пакет из репозитория github, код немного отличается, и вы должны использовать команду npm:

npm start-dev
...