Install & Compatibility
Where this runs
tested against v? · npm install
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
muslnode 18–226 runs
build_error
glibcnode 18–226 runs
build_error
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
TrinoClient
✓ import { TrinoClient } from 'trino-client';
✗ const TrinoClient = require('trino-client').TrinoClient;
The library primarily uses ES modules. While CommonJS `require` might work in some transpiled setups, `import` is the idiomatic and recommended approach. The `TrinoClient` class itself is not directly constructible since v0.2.0; use `TrinoClient.create()`.
Trino
✓ import type { Trino } from 'trino-client';
✗ import { Trino } from 'trino-client';
This is typically used as a TypeScript type for the client instance returned by `TrinoClient.create()`, not a runtime value. Import it as a type.
QueryConfig
✓ import type { QueryConfig } from 'trino-client';
✗ import { QueryConfig } from 'trino-client';
This interface defines the configuration options for connecting to Trino and executing queries. It's a TypeScript type and should be imported as such for type safety.
Demonstrates how to connect to a Trino instance, execute a simple `SELECT` query, and process results using the async iterator pattern. It includes basic configuration and handles environment variables for sensitive data.
import { TrinoClient, type QueryConfig, type Trino } from 'trino-client';
async function runTrinoQuery() {
const config: QueryConfig = {
serverUrl: process.env.TRINO_SERVER_URL || 'http://localhost:8080',
catalog: process.env.TRINO_CATALOG || 'memory',
schema: process.env.TRINO_SCHEMA || 'default',
user: process.env.TRINO_USER || 'testuser',
// Optional: For SSL/TLS connections, enable 'https' and manage 'requestVerification'
// https: true,
// requestVerification: false // Use with caution for self-signed certs in dev
// For Basic Authentication, pass an 'auth' object, e.g.,
// auth: new (await import('trino-client')).BasicAuth('username', 'password'),
};
let trinoClient: Trino; // Type for the client instance
try {
// Starting from v0.2.0, TrinoClient constructor is private. Use static factory method.
trinoClient = TrinoClient.create(config);
console.log(`Connected to Trino at ${config.serverUrl}`);
const query = 'SELECT * FROM system.runtime.nodes LIMIT 1';
console.log(`Executing query: "${query}"`);
// The query method now returns an async iterator (since v0.2.0)
const queryResults = await trinoClient.query(query);
console.log('Query results:');
for await (const { columns, data } of queryResults) {
if (columns) {
console.log('Columns:', columns.map(c => c.name).join(', '));
}
if (data) {
data.forEach(row => console.log(row));
}
}
console.log('Query finished successfully.');
} catch (error) {
console.error('Failed to run Trino query:', error instanceof Error ? error.message : String(error));
}
}
runTrinoQuery();
Errors
Common errors & fixes
TypeError: TrinoClient is not a constructor
Attempting to instantiate `TrinoClient` with the `new` keyword after version 0.2.0.
fixUse the static factory method `TrinoClient.create(config)` instead of `new TrinoClient(config)`.
Error: self-signed certificate in certificate chain
Connecting to a Trino server over HTTPS with a self-signed or untrusted SSL/TLS certificate without disabling certificate verification.
fixIf in a development environment, set `requestVerification: false` in your `QueryConfig`. For production, ensure the Trino server uses a certificate issued by a trusted Certificate Authority (CA).
SyntaxError: Named export 'TrinoClient' not found
Trying to use CommonJS `require()` syntax (e.g., `const { TrinoClient } = require('trino-client');`) in a module that primarily uses ES modules, or an incorrect named import.
fixEnsure your environment is configured for ES modules and use `import { TrinoClient } from 'trino-client';`. Error: Query failed: line X:Y: Table 'catalog.schema.table' does not exist
The specified catalog, schema, or table in your query does not exist, or the configured user lacks sufficient permissions to access it.
fixVerify the `catalog`, `schema`, `user`, and table name in your `QueryConfig` and SQL query. Check Trino server logs for more details on access rights or table existence.
Audit
Dependencies
axiosrequiredUsed for making HTTP requests to the Trino server.
form-datarequiredUsed for handling multipart form data, potentially for specific Trino APIs or authentication methods.
p-queuerequiredManages concurrency for requests.