#node.js #import #next.js #apollo-server #nodejs-server
#node.js #импорт #next.js #apollo-сервер #nodejs-сервер
Вопрос:
у меня есть полностью работающий модульный сервер apollo на NextJS (основанный на этой статьеhttps://www.apollographql.com/blog/modularizing-your-graphql-schema-code-d7f71d5ed5f2 / ) в основном я создаю массив моих typedefs и объединяю преобразователи, используя функцию merge из Lodash … пока все хорошо … это передает функцию makeExecutableSchema, и эта схема отправляется на сервер… и это отлично работает…
проблема в том, что я пытаюсь переместить сервер за пределы NextJS … и когда я пытаюсь создать новый проект и выполнить инициализацию yarn или npm init … установить зависимости и попытаться скопировать вставить все мои файлы схемы в новый проект npm init, ВЕСЬ мой импорт перепутан, и я начинаю получать все эти ошибки, такие как:
в NextJS у меня есть (это просто работает в NextJS):
import { merge } from "lodash";
в проекте new node говорится, что слияние не удалось найти в Lodash…
или модуль является CommonJS и он не может выполнять именованный импорт…
или, если я выполняю импорт с помощью require, он говорит ReferenceError: require не определен, я думаю, это должно быть связано с тем, что node ожидает запустить это в браузере, но я понятия не имею, как указать, что это не будет запускаться в браузере, поскольку это просто js-файл, который предназначен для модульной схемы apollo…
я просто не понимаю, почему все предложения импорта отлично работают в Next, но когда я запускаю сервер apollo в обычном узле, каждый импорт выдает так много ошибок… я исправил некоторые, добавив расширение в конце импортируемого файла (то, что не было необходимо в NextJS) или добавив «/index» в конце импортируемого пакета…
Есть ли способ заставить импорт вести себя как в Next??? но в новом проекте NodeJS?
Любая помощь или ориентация были бы ВЫСОКО оценены
Ответ №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 😀