-
Notifications
You must be signed in to change notification settings - Fork 47
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Deno example in README.md doesn't work with files #138
Comments
I Can confirm this. For me I get the this error:
Using |
Same thing happened to me using the Remix vite cloudflare framework and running it with node locally. libsql/client seems to think it's in the cloudflare environment. |
Same here any update on how you solved with Remix? |
Facing the same issue. The workaround to use |
Same issue and i can not use |
The problem remains if you try to compile the app with deno --compile or deploy it to deno deploy. |
in the meantime the following is a workaround if you want to deploy to Deno Deploy import type { Client } from 'libsql-core';
interface SqliteConfig {
url: string;
authToken?: string;
}
export class Sqlite {
private client!: Client;
constructor(private readonly config: SqliteConfig) {}
async getClient(): Client {
if (!this.client) {
await this.createClient();
}
return this.client;
}
private async createClient() {
// local db file
if (this.isFileUrl(this.config.url)) {
const libsqlNode = await import('libsql-node');
this.client = libsqlNode.createClient({ url: this.config.url });
await this.setPragma();
return this;
}
// remote db
// due to deno limitations we need to use libsql-web
const libsqlWeb = await import('libsql-web');
this.client = libsqlWeb.createClient({
url: this.config.url,
authToken: this.config.authToken,
});
return this;
}
private isFileUrl(url: string): boolean {
return url.startsWith('file:');
}
private async setPragma() {
await this.client.execute('PRAGMA journal_mode = WAL;');
await this.client.execute('PRAGMA busy_timeout = 5000;');
await this.client.execute('PRAGMA synchronous = NORMAL;');
await this.client.execute('PRAGMA cache_size = 2000;');
await this.client.execute('PRAGMA temp_store = MEMORY;');
await this.client.execute('PRAGMA foreign_keys = true;');
}
} |
This works, but only in http mode with no support for embedded replicas. The whole point of using Turso is to have embedded replicas for reads in such a simple way. |
I'm not using deno, but I'm getting the same error together with next:
|
Removing the following line: EDIT: When using Deno + libsql locally |
The following script demonstrates that the import statement #!/bin/bash
docker run --rm -i denoland/deno:2.0.2 sh <<\EOF
date
env
mkdir myapp
cd myapp
deno init .
deno add npm:@libsql/[email protected]
cat <<EOOF > main.ts
import { createClient } from "@libsql/client/node";
const client = createClient({
url: "file:local.db",
});
await client.batch(
[
"CREATE TABLE IF NOT EXISTS users (email TEXT)",
"INSERT INTO users VALUES ('[email protected]')",
],
"write",
);
const result = await client.execute("SELECT * FROM users");
console.log("Users:", result.rows);
EOOF
echo
echo "==> test 1"
echo
deno run -A main.ts
EOF |
Working with cloudflare workers and I experience the same issue;
LibsqlError: URL_SCHEME_NOT_SUPPORTED: The client that uses Web standard APIs supports only "libsql:", "wss:", "ws:", "https:" and "http:" URLs, got "file:". For more information, please read https://github.com/libsql/libsql-client-ts#supported-urls |
It doesn't work for me T.T. These kinds of things are what make you think a lot about switching to Deno. |
opened PR #297 to facilitate our discussion. Here's a summary of the changes:
But this requires additional At this point, I'm uncertain about the next steps. I considered dynamically importing createClient from sqlite3, but this approach would necessitate making the function asynchronous. |
I agree. But Deno is becoming more solid with every release. And kinks like these, will be ironed out |
@williamukoh I now understand that the problem is not with Deno but with Turso. I am using Neon-postgres in the meantime and it works perfectly. It is a shame because I really like Turso-sqlite. |
The following fails with Deno:
this works, however:
The text was updated successfully, but these errors were encountered: