SyntaxError:意外令牌{编译我的node.js代码时

时间:2019-10-14 09:54:21

标签: node.js neo4j graphql grandstack

当我尝试运行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... 

下面是我的祖父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}`);
});

对于每个导入语句,我都会收到此错误。 如果我从代码中删除了有问题的导入(例如,“ ./ graphql-schema”中的import:{typeDefs};),那么在下一次导入时会遇到相同的错误

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...

有人可以帮助我确定问题出在哪里

2 个答案:

答案 0 :(得分:0)

您的package.json好像有问题。

启动api时,我看到以下命令:

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

因此,您没有使用babel来转译代码,这可能就是为什么您的导入无法正常工作的原因。您应该使用grand-stack-starter(可从网站下载)中的package.json调用正确的命令来启动具有babel支持的api服务器。

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

如您所见,此命令使用babel-node来使用babel转换代码,这增加了对导入的支持,该导入现在应该可以正常工作,并且您可以从npm start开始运行api。如果使用github存储库中的软件包,则代码几乎没有什么不同,应该使用npm命令:

npm start-dev

答案 1 :(得分:0)

就我而言,使用命令时我位于错误的文件夹中,对于其他有相同问题的其他人,也可能是原因,因此请确保您位于服务器文件夹中。 我的案例是Express.js。

快乐编码!