Как определить файловый ресурс для расширения кода VS? - PullRequest
0 голосов
/ 09 ноября 2019

У меня есть функция, которая получает запись из базы данных, используя better-sqlite3. Функция находится в файле в том же каталоге, что и база данных.

import * as vscode from 'vscode';

/**
 * Get the entry from the SQLite3 DB.
 */
function getEntry(entryId: number) {
    const Database = require('better-sqlite3');
    const dbPath = vscode.Uri.parse('file://data.db', true); // <--
    const db = new Database(dbPath, { verbose: console.log });
    const stmt = db.prepare("SELECT * FROM data_tbl WHERE entryId = ?;");
    const dec = stmt.get(entryId);
    // ...
}

Я достаточно знаком с JS / TS, чтобы нормально работать, но я не могу понять, как я долженпередать первый аргумент конструктору new Database(). Попытка dbPath.path должна вернуть string, но это неверно: "/" - это значение. Атрибут authority становится "data.db".

. Просто использование абсолютного пути к файлу базы данных в качестве первого аргумента конструктора (new Database("/Users/jamesh625/extension/src/data.db", { verbose: console.log });) работает.

В качестве альтернативы,

const dbPath = vscode.Uri.parse('file:///Users/jamesh625/extension/src/data.db', true); // <--
const db = new Database(dbPath.path, { verbose: console.log });

также работает.

Как правильно сделать это, чтобы расширение можно было установить для других пользователей? Как обрабатывать файловые ресурсы для расширений кода VS?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...