模块化 apollo 服务器上的导入问题

issues with imports on modularized apollo server

我在 nextJS 上有一个完全工作的模块化 apollo 服务器(基于这篇文章 https://www.apollographql.com/blog/modularizing-your-graphql-schema-code-d7f71d5ed5f2/)基本上我正在做我的 typedef 数组并使用 lodash 的合并功能合并解析器......到目前为止很好...这提供了一个函数 makeExecutableSchema 并且该模式将发送到服务器...并且效果很好...

问题是我试图将服务器移到 nextJS 之外......当我尝试创建一个新项目和 yarn init 或 npm init 时......安装依赖项,并尝试复制粘贴我的所有模式文件到新的 npm init 项目我所有的进口都搞砸了,我开始收到所有这些错误,如:

我有 nextJS(这个在 nextJS 中很有效):

import { merge } from "lodash";

在新节点项目中,它说在 lodash 中找不到合并... 或者模块是 commonJS 并且它不能做命名导入...... 或者如果我使用 require 进行导入,它说 ReferenceError: require is not defined,我认为这应该是由于节点期望在浏览器上 运行 这个,但我不知道如何指定这个不会 运行 在浏览器上,因为它只是一个旨在模块化 apollo 模式的 js 文件...

我只是不明白为什么所有的导入语句在 Next 中都可以正常工作,但是当我在普通节点中启动 apollo 服务器时,每个导入都会给出很多错误...我通过在末尾添加扩展来修复了一些导入的文件名(nextJS 中不需要的东西)或在导入的包末尾添加“/index”...

有没有办法让导入的行为像 Next 中那样???但是在一个新的 nodeJS 项目中?

任何帮助或方向将不胜感激

答案是:

使用 Babel,使用 NPM 或 YARN 安装

"@babel/core"
"@babel/node"
"@babel/preset-env"

将.babelrc文件添加到项目根目录:

{
  "presets": ["@babel/preset-env"]
}

到 运行 主文件使用 package.json 中的脚本,例如:

"start": "nodemon --exec babel-node index.js"

这将允许执行现代 JavaScript :D