【问题标题】:issues with imports on modularized apollo server模块化阿波罗服务器上的导入问题
【发布时间】:2020-12-13 15:21:01
【问题描述】:

我在 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 项目中?

任何帮助或指导将不胜感激

【问题讨论】:

    标签: node.js import next.js apollo-server nodejs-server


    【解决方案1】:

    答案是:

    使用 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

    【讨论】:

      猜你喜欢
      • 2021-09-09
      • 2019-02-08
      • 2020-10-18
      • 1970-01-01
      • 2019-03-06
      • 2020-10-04
      • 2021-10-28
      • 2021-02-13
      • 2020-07-19
      相关资源
      最近更新 更多