En tentant de créer une application SvelteKIT avec pnpm
et better-sqlite3
, je suis tombé sur une erreur et je vous montre aujourd’hui comment la corriger.
Voici l’erreur :
→ /Users/admin/Downloads/test/node_modules/.pnpm/better-sqlite3@11.8.1/node_modules/better-sqlite3/lib/binding/node-v127-darwin-arm64/better_sqlite3.node
at bindings (/Users/admin/Downloads/test/node_modules/.pnpm/bindings@1.5.0/node_modules/bindings/bindings.js:126:9)
at new Database (/Users/admin/Downloads/test/node_modules/.pnpm/better-sqlite3@11.8.1/node_modules/better-sqlite3/lib/database.js:48:64)
at file:///Users/admin/Downloads/test/create-db.js:3:12
at ModuleJob.run (node:internal/modules/esm/module_job:271:25)
at async onImport.tracePromise.__proto__ (node:internal/modules/esm/loader:547:26)
at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:116:5) {
tries: [
'/Users/admin/Downloads/test/node_modules/.pnpm/better-sqlite3@11.8.1/node_modules/better-sqlite3/build/better_sqlite3.node',
'/Users/admin/Downloads/test/node_modules/.pnpm/better-sqlite3@11.8.1/node_modules/better-sqlite3/build/Debug/better_sqlite3.node',
'/Users/admin/Downloads/test/node_modules/.pnpm/better-sqlite3@11.8.1/node_modules/better-sqlite3/build/Release/better_sqlite3.node',
'/Users/admin/Downloads/test/node_modules/.pnpm/better-sqlite3@11.8.1/node_modules/better-sqlite3/out/Debug/better_sqlite3.node',
'/Users/admin/Downloads/test/node_modules/.pnpm/better-sqlite3@11.8.1/node_modules/better-sqlite3/Debug/better_sqlite3.node',
'/Users/admin/Downloads/test/node_modules/.pnpm/better-sqlite3@11.8.1/node_modules/better-sqlite3/out/Release/better_sqlite3.node',
'/Users/admin/Downloads/test/node_modules/.pnpm/better-sqlite3@11.8.1/node_modules/better-sqlite3/Release/better_sqlite3.node',
'/Users/admin/Downloads/test/node_modules/.pnpm/better-sqlite3@11.8.1/node_modules/better-sqlite3/build/default/better_sqlite3.node',
'/Users/admin/Downloads/test/node_modules/.pnpm/better-sqlite3@11.8.1/node_modules/better-sqlite3/compiled/22.13.0/darwin/arm64/better_sqlite3.node',
'/Users/admin/Downloads/test/node_modules/.pnpm/better-sqlite3@11.8.1/node_modules/better-sqlite3/addon-build/release/install-root/better_sqlite3.node',
'/Users/admin/Downloads/test/node_modules/.pnpm/better-sqlite3@11.8.1/node_modules/better-sqlite3/addon-build/debug/install-root/better_sqlite3.node',
'/Users/admin/Downloads/test/node_modules/.pnpm/better-sqlite3@11.8.1/node_modules/better-sqlite3/addon-build/default/install-root/better_sqlite3.node',
'/Users/admin/Downloads/test/node_modules/.pnpm/better-sqlite3@11.8.1/node_modules/better-sqlite3/lib/binding/node-v127-darwin-arm64/better_sqlite3.node'
]
Il semble que le problème vienne d’un script qui s’exécute à l’installation qui n’a pas correctement fonctionné, je vous conseille de tenter supprimer les dossiers .svelte-kit
, node_modules
et pnpm-lock.yaml
.
Vous pouvez ensuite lancer la commande pnpm rebuild better-sqlite3
, puis pnpm i
et tester à nouveau votre application / script.
Si cela ne fonctionne pas, il faut ajouter une ligne dans votre fichier package.json
dans la section pnpm
, puis onlyBuiltDependencies
. Votre fichier devrais maintenant ressembler à ça :
{
"name": "test",
"private": true,
"version": "0.0.1",
"type": "module",
"scripts": {
"dev": "vite dev",
"build": "vite build",
"preview": "vite preview",
"prepare": "svelte-kit sync || echo ''",
"format": "prettier --write .",
"lint": "prettier --check ."
},
"devDependencies": {
"@sveltejs/adapter-auto": "^4.0.0",
"@sveltejs/kit": "^2.16.0",
"@sveltejs/vite-plugin-svelte": "^5.0.0",
"prettier": "^3.4.2",
"prettier-plugin-svelte": "^3.3.3",
"svelte": "^5.0.0",
"vite": "^6.0.0"
},
"pnpm": {
"onlyBuiltDependencies": [
"esbuild",
"better-sqlite3"
]
},
"dependencies": {
"better-sqlite3": "^11.8.1"
}
}
Vous pouvez ensuite répéter le processus, c’est à dire supprimer .svelte-kit
, node_modules
et pnpm-lock.yaml
. Lancer pnpm rebuild better-sqlite3
, puis pnpm i
et tester à nouveau votre application / script.
C’est corrigé ! ✅
Merci pour votre lecture.