This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

Проблема Не хочет заводится Prisma ORM

hirsizska

Новый участник
29 Июн 2024
1
0
10
Использовал для старта проекта шаблон typescript ragemp-typescript от leonardssh, установил туда Prisma ORM, создал схему, настроил DATABASE_URL, суть не в этом.
При попытке импорта PrismaClient и использования в indexном серверном файле, после билда и запуска сервера происходит ошибка:

Вот эти две строки из-за которых происходит ошибка:

JavaScript:
import { PrismaClient } from '@prisma/client'

const prisma = new PrismaClient()
 

Jerry (ChatGPT)

AI-powered language model
VIP
helper
17 Окт 2023
2,430
239
100
Привет! Ошибка, которую вы описали, может возникнуть из-за неправильного импорта PrismaClient. Убедитесь, что вы импортируете PrismaClient правильно. Обычно это выглядит примерно так:
Код:
import { PrismaClient } from '@prisma/client';
Помимо этого, также убедитесь, что файл с присоединением к базе данных корректно сконфигурирован и что Prisma успешно подключается к вашей базе данных.
 

oliwkevich

Участник портала
1 Дек 2020
10
5
67
К сожалению призма не будет работать с Рейджом. Я тоже пробовал и разные версии и разные способы, все мимо. Тогда просто взял Type ORM. Как я понял проблема в том, что Рейдж можеть юзать только коммон импорты, а призме надо модуль импортс. Можешь попробовать файлы сделать через .mjs, но врядли поможет.
 

Harvey Specter

Специалист
BackEnd developer
7 Ноя 2020
249
89
95
Плохо пробовал. Спокойно заводится и работает.
 

Harvey Specter

Специалист
BackEnd developer
7 Ноя 2020
249
89
95
Вообщем, вижу что ты уже юзаешь тайп скрипт. Чтобы завелась, используй esbuild для компиляции сервера.
По итогу команда для билда должна выглядеть примерно так:
JSON:
"build": "esbuild src/index.ts --bundle --platform=node --target=node10.4 --outfile=../../server/packages/server/index.js",

Ну и соответсвенно использование:

JavaScript:
import { PrismaClient } from '@prisma/client'

export const prisma = new PrismaClient()

Важный момент. Исходники сервера должны иметь сообственный package.json, где type должен быть module.
Ну а соотсветсвенно чтобы запустить сервер, там где у тебя ragemp-server.exe должен быть ещё один package.json где type уже нужно указать дефолтный.

P.S Если будешь пробовать установить сервак на линукс, то могут быть проблемы с тем же openssl или какими нибудь другими зависимости, так как призма под капотом юзает самописный "сервер" на rust который трансформирует твои запросы в SQL.
 
Реакции: laflenory

laflenory

Новый участник
1 Июл 2024
2
1
5
Не знаю, на сколько это правильное решение. В официальной документации гласит:

Код:
Module bundlers bundle JavaScript modules into a single JavaScript file. Most bundlers work by copying over the JavaScript code from a variety of source files into the target file.

Since Prisma Client is not only based on JavaScript code, but also relies on the query engine binary file to be available, you need to make sure that your bundled code has access to the binary file.

Собрать весь проект в один бандл для работы с Prisma будет недостаточно. Если используете webpack или что-то подобное, можете воспользоваться плагинами для копирования статических файлов. В нашем случае необходимо скопировать .prisma/client (автоматически генерируется клиент на основе описанных моделей, а также query_engine-windows.dll.node (зависит от OC, которую Вы используете)). Я в своём примере использовал esbuild с отдельным плагином конфигурации.

Оставляю ссылку на репозиторий.

Не все процессы в данной репе автоматизированы, кое-что придётся поделать ручками.