void/db imported from schema files outside db/schema.ts causes a circular import (sql is not a function)
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 53/100
- Type d'issue
- Bug
- Clarté
- Plutôt claire
- Activité
- Active
- Stack technique
- sqlite, typescript, vite
- Domaine
- backend, build-system
Piste de recherche
Start with the Vite plugin logic in the dist/dispatch-*.mjs files mentioned in the report, then trace how it resolves void/db for db/schema.ts and re-exported schema files. Reproduce the cycle with the supplied D1/SQLite schema example in a Vite runtime. Done means the reported route can import the table without sql is not a function, or the project documents a supported alternative for sql in re-exported schema files.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Description
Importing sql from void/db in a table file that is re-exported from db/schema.ts, rather than defined in it, fails at runtime with:
TypeError: vite_ssr_import_0.sql is not a function
Reproduction
// db/schema.ts:
export * from "../src/resources/projects/projects.schema";
// src/resources/projects/projects.schema.ts:
import { sql } from 'void/db';
import { sqliteTable, text, integer } from 'void/schema-d1';
export const projects = sqliteTable('projects', {
id: integer('id').primaryKey({ autoIncrement: true }),
createdAt: text('created_at').notNull().default(sql`(datetime('now'))`),
});
Request any route that imports the table (e.g. via a repository).
Cause (from reading dist/dispatch-*.mjs)
The Vite plugin treats void/db as virtual:void-db-schema (no schema import) only when the importer is exactly db/schema.ts. Any other file gets virtual:void-db, which does import * as schema from db/schema.ts. That gives the cycle:
projects.schema.ts -> virtual:void-db -> db/schema.ts -> projects.schema.ts
sql is used at module top level while virtual:void-db is still evaluating, so it is undefined. tsc and void db generate don't catch it; only the Vite runtime does.
Similar to #50 (same error, caused by Windows path separators), but this one happens on Linux with a re-exported schema layout.
Expected
Either schema files reachable from db/schema.ts get the schema-free module too, or the docs say schema files other than db/schema.ts must not import void/db (and show an alternative for sql).
Environment
- void 1.1.11
- Linux
- D1 / sqlite
- Langage dominant
- TypeScript
- Étoiles
- 402
- Forks
- 32
- Merge moyen
- 13 h 14 min
- PR mergées (30 j)
- 73
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de voidzero-dev/void
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
voidzero-dev/void#463 ·
Les mainteneurs répondent en général sous 1 jour
-
Deploy after a secret change fails for Workers over ~750 KB: source read-back capped at 1 MiBOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
voidzero-dev/void#459 ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 1/5 1-3 heures Accessibilité débutants 78/100
voidzero-dev/void#428 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 52/100
voidzero-dev/void#471 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 55/100
voidzero-dev/void#470 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de voidzero-dev/void
Issues similaires
-
Object parameters lose their structure when resources is enabledPeut-être pris @asts-top l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
Les mainteneurs répondent en général sous 2 jours
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
jaegertracing/jaeger-ui#4618 ·
Les mainteneurs répondent en général sous 1 jour
-
pending close triaging
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
anomalyco/opencode#56765 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
area:plugins enhancement platform:vscode
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
anthropics/claude-code#103166 ·
Les mainteneurs répondent en général sous 1 jour
-
Types: FlashListProps imports ViewabilityConfig from react-native, removed in RN 0.87+Peut-être pris @efegokdemir l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Shopify/flash-list#2540 ·