npm install prisma --save-dev
npx prisma init --datasource-provider sqlite --output ../generated/prisma
cat <<EOF >> prisma/schema.prisma
model User {
id Int @id @default(autoincrement())
name String
}
EOF
npx prisma migrate dev --name init
上記のようにCLIインストール、スキーマ定義、migrationまで実行した後、
npm install @prisma/client
でクライアントをインストールしたのに、
import { PrismaClient } from '@prisma/client';
このソースをnpx tscでコンパイルするとこんなエラーが出てしまう。
Module '"@prisma/client"' has no exported member 'PrismaClient'.
理由はよくわかりませんが、こちらを参考に以下を実行したら解決しました。
rm -rf node_modules
npm install
npx prisma generate
この後、npx tscでコンパイルすると成功します。ちなみにtsconfig.jsonは以下のようにしてました。
{
// Visit https://aka.ms/tsconfig to read more about this file
"compilerOptions": {
// File Layout
"rootDir": "./src",
"outDir": "./dist",
// Environment Settings
// See also https://aka.ms/tsconfig/module
"module": "esnext",
"target": "es2020",
"types": [],
// Other Outputs
"sourceMap": true,
"declaration": true,
"declarationMap": true,
// Stricter Typechecking Options
"noUncheckedIndexedAccess": true,
"exactOptionalPropertyTypes": true,
// Recommended Options
"strict": true,
"jsx": "react-jsx",
"verbatimModuleSyntax": true,
"isolatedModules": true,
"noUncheckedSideEffectImports": true,
"moduleDetection": "force",
"skipLibCheck": true,
"moduleResolution": "node",
},
"include":["./src/**/*.ts"]
}
しかし、node dist/index.jsで実行してみると、以下のエラーが出ました。
throw new Error('@prisma/client did not initialize yet. Please run "prisma generate" and try to import it again.');
こちらによると、generateの出力先をデフォルトから変更した場合、importする方も変更が必要になるとのこと。
import { PrismaClient } from '../generated/prisma/index.js';
ようやくこれで動きました。