我使用的是 Mac M1,刚刚升级到 Node 14.17.6LTS。
我尝试使用电子构建器(22.11.7)重建better_sqlite3(7.4.3),但出现以下错误:
“v8::ArrayBuffer”中没有名为“GetContents”的成员
有什么想法如何解决这个问题吗?提前致谢!
Run Code Online (Sandbox Code Playgroud)gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ] SOLINK_MODULE(target) Release/.node CXX(target) Release/obj.target/fse/fsevents.o In file included from ../fsevents.cc:6: In file included from ../../nan/nan.h:2884: ../../nan/nan_typedarray_contents.h:34:43: error: no member named 'GetContents' in 'v8::ArrayBuffer' data = static_cast<char*>(buffer->GetContents().Data()) + byte_offset;
我在 上使用better-sqlite3Node,但我怀疑我的问题也适用于node-sqlite3。
我基本上有两个与服务器渲染网站相关的简单问题:
我需要显式调用.close()数据库吗?我似乎记得在某处读过,当当前范围(如当前函数)退出时它会自动关闭。如果我从未.close()在 Web 服务器场景中调用并接受大量请求怎么办?
如果您有一堆不同的组件(身份验证、授权、本地化、支付等),并且每个组件可能需要也可能不需要在请求的整个生命周期中访问数据库(这些组件的生命周期非常短暂,除了付款),是不是更好
谢谢
我目前有一个人的数据库,每个人都有一个状态值。我正在尝试更改它们的状态值。
const id = parseInt(req.params.id , 10);
const { valid, messageObj } = validateId(id);
if (!valid) {
res.status(400).send(messageObj);
}
let { status, priority } = req.body;
let people = db.prepare('select * from people').all();
const person = people.find(person => person.id === id);
if(status !== 'none' & status == 'ready' || status == 'done'){
let updates = db.query(
'UPDATE people SET ? WHERE ?',
[{ status: status }, { id: id }]
);
}
Run Code Online (Sandbox Code Playgroud)
我不断收到错误消息,db.query is not a function但是对于我尝试的每个功能,我都会收到错误消息。
对 …
如何将 TypeORM 与 Better-sqlite3 一起使用?
在官方文档上,有一个更好的-sqlite3 形式。
我已经安装了typeorm@latest,typeorm@next但是还没有更好的 sqlite3 选项。
如果我尝试强制初始化它,则会出现以下错误
MissingDriverError:错误的驱动程序:给出了“更好的sqlite3”。支持的驱动程序有:“cordova”、“expo”、“mariadb”、“mongodb”、“mssql”、“mysql”、“oracle”、“postgres”、“sqlite”、“sqljs”、“react-native”、 “aurora-data-api”、“aurora-data-api-pg”。
问题
\n\n我的安装可能存在一些问题,better-sqlite3因为当我尝试执行我的index.js(单击以在pastebin上显示它)时
node index.js
总是有相同的结果。我在 MacOS 上尝试过,它可以工作,但在我的机器上基于 Linux Lite Ubuntu 的发行版中,它没有给我以下相同的错误:
\n\n/home/mp8/webproject/electron-better-sqlite/node_modules/bindings/bindings.js:96\n throw err\n ^\n\nError: Could not locate the bindings file. Tried:\n \xe2\x86\x92 /home/mp8/webproject/electron-better-sqlite/node_modules/better-sqlite3/build/better_sqlite3.node\n \xe2\x86\x92 /home/mp8/webproject/electron-better-sqlite/node_modules/better-sqlite3/build/Debug/better_sqlite3.node\n \xe2\x86\x92 /home/mp8/webproject/electron-better-sqlite/node_modules/better-sqlite3/build/Release/better_sqlite3.node\n \xe2\x86\x92 /home/mp8/webproject/electron-better-sqlite/node_modules/better-sqlite3/out/Debug/better_sqlite3.node\n \xe2\x86\x92 /home/mp8/webproject/electron-better-sqlite/node_modules/better-sqlite3/Debug/better_sqlite3.node\n \xe2\x86\x92 /home/mp8/webproject/electron-better-sqlite/node_modules/better-sqlite3/out/Release/better_sqlite3.node\n \xe2\x86\x92 /home/mp8/webproject/electron-better-sqlite/node_modules/better-sqlite3/Release/better_sqlite3.node\n \xe2\x86\x92 /home/mp8/webproject/electron-better-sqlite/node_modules/better-sqlite3/build/default/better_sqlite3.node\n \xe2\x86\x92 /home/mp8/webproject/electron-better-sqlite/node_modules/better-sqlite3/compiled/8.11.3/linux/x64/better_sqlite3.node\n at bindings (/home/mp8/webproject/electron-better-sqlite/node_modules/bindings/bindings.js:93:9)\n at Object.<anonymous> (/home/mp8/webproject/electron-better-sqlite/node_modules/better-sqlite3/lib/database.js:4:40)\n at Module._compile (module.js:652:30)\n at Object.Module._extensions..js (module.js:663:10)\n at Module.load (module.js:565:32)\n at tryModuleLoad (module.js:505:12)\n at Function.Module._load (module.js:497:3)\n at Module.require (module.js:596:17)\n at require (internal/module.js:11:18)\n at Object.<anonymous> (/home/mp8/webproject/electron-better-sqlite/node_modules/better-sqlite3/index.js:2:18)\nRun Code Online (Sandbox Code Playgroud)\n\n我的目的是什么? …
我已经构建了一个节点应用程序,它使用一个模块来处理数据库(更好的 sqlite3)。
它作为节点应用程序运行良好。但是,现在我正在尝试制作一个具有大部分相同功能的 VS Code 扩展。
但是,当我安装模块、构建并运行新扩展时,我收到以下消息:
激活扩展 'undefined_publisher.myPlugin' 失败:模块 '\?\C:...\node_modules\better-sqlite3\build\Release\better_sqlite3.node' 是针对不同的 Node.js 版本使用 NODE_MODULE_VERSION 72 编译的。此版本Node.js 需要 NODE_MODULE_VERSION 75。请尝试重新编译或重新安装模块(例如,使用
npm rebuild或npm install)。
我知道 VS Code 扩展是 Electron 应用程序,它们使用的节点版本与我为纯节点应用程序创建的节点版本不同,但我不清楚我必须在扩展程序中做什么来构建模块(更好的 sqlite3)节点的正确版本?
node.js electron visual-studio-code vscode-extensions better-sqlite3
我正在尝试使用node.js和better-sqlite3创建一个新表。当我执行该文件时,它返回以下错误:
ReferenceError: createtable is not defined at Object.<anonymous> (...my file's path...)
Run Code Online (Sandbox Code Playgroud)
我该如何解决?这是我的代码:
const express = require('express');
var createError = require('http-errors');
const app = express();
const port = 3000;
const sqlitedb = require('better-sqlite3');
const createTable = "CREATE TABLE IF NOT EXISTS users('name' varchar, 'surname' varchar, 'date_of_birth' DATE DEFAULT, 'email' varchar, 'username' varchar PRIMARY KEY, 'password' varchar );"
const dbusers = './databaseUsers.sqlite3';
let db = new sqlitedb(dbusers , sqlitedb.OPEN_READWRITE, (err) => {
if (err) {
console.error(err.message);
}
verbose: console.log} …Run Code Online (Sandbox Code Playgroud) 我一直在将 sqlite3 用于我的大部分全栈应用程序(前端的 node/express、django/drf + svelte 作为 api 端点的使用者),并且一直在试图弄清楚如何集成 sqlite3。
这是我所做的
我假设您熟悉 sveltekit。对于那些新手,你可以去看看SvelteKit
database.js在src/lib文件夹内创建文件import sqlite from 'better-sqlite3'
const DB = new sqlite('./annadb.sqlite')
const schema = `CREATE TABLE IF NOT EXISTS posts(
id INTEGER NOT NULL PRIMARY KEY,
title TEXT NOT NULL
)`;
DB.exec(schema)
export default DB
Run Code Online (Sandbox Code Playgroud)
index.json.js端点以src/routes使用以下代码从文件夹内的数据库中获取所有文章:import DB from '$lib/database.js'
export async function get() {
const articles = await DB.prepare('SELECT * FROM posts').all()
if (articles) { …Run Code Online (Sandbox Code Playgroud) /Users/dhyan/Downloads/Dhyan99-bot-v14 (4)/node_modules/bindings/bindings.js:121\n throw e;\n ^\n\nError: The module \'/Users/dhyan/Downloads/Dhyan99-bot-v14 (4)/node_modules/better-sqlite3/build/Release/better_sqlite3.node\'\nwas compiled against a different Node.js version using\nNODE_MODULE_VERSION 93. This version of Node.js requires\nNODE_MODULE_VERSION 108. Please try re-compiling or re-installing\nthe module (for instance, using `npm rebuild` or `npm install`).\n at Module._extensions..node (node:internal/modules/cjs/loader:1203:18)\n at Module.load (node:internal/modules/cjs/loader:997:32)\n at Module._load (node:internal/modules/cjs/loader:838:12)\n at Module.require (node:internal/modules/cjs/loader:1021:19)\n at require (node:internal/modules/cjs/helpers:103:18)\n at bindings (/Users/dhyan/Downloads/Dhyan99-bot-v14 (4)/node_modules/bindings/bindings.js:112:48)\n at new Database (/Users/dhyan/Downloads/Dhyan99-bot-v14 (4)/node_modules/better-sqlite3/lib/database.js:48:64)\n at Database (/Users/dhyan/Downloads/Dhyan99-bot-v14 (4)/node_modules/better-sqlite3/lib/database.js:11:10)\n at new SqliteDriver (/Users/dhyan/Downloads/Dhyan99-bot-v14 (4)/node_modules/quick.db/out/drivers/SqliteDriver.js:8:25)\n at new QuickDB (/Users/dhyan/Downloads/Dhyan99-bot-v14 (4)/node_modules/quick.db/out/index.js:17:28) {\n code: \'ERR_DLOPEN_FAILED\'\n}\n\nNode.js v18.8.0\nRun Code Online (Sandbox Code Playgroud)\n … sqlite和better-sqlite3实现之间有什么区别?我必须使用 better-sqlite3 为表单创建数据库(+仅node.js 和express),但我发现的唯一清晰的示例使用sqlite。有什么区别吗?如果没有,谢谢。否则,您知道有 better-sqlite3 的数据库和表单的任何有用链接吗?谢谢
我尝试安装它的原因是使用 fast.db 作为默认驱动程序,但我似乎无法弄清楚错误是什么。也许堆栈溢出的好心人能够提供一些帮助。看起来它成功地完成了大部分安装过程,但最终失败了。尝试使用这个新版本的 QuickDB 一直是一种持续的痛苦。
这是控制台生成的日志:
npm ERR! code 1
npm ERR! path /Projects/node_modules/better-sqlite3
npm ERR! command failed
npm ERR! command sh -c prebuild-install || npm run build-release
npm ERR! > better-sqlite3@7.5.3 build-release
npm ERR! > node-gyp rebuild --release
npm ERR!
npm ERR! TOUCH ba23eeee118cd63e16015df367567cb043fed872.intermediate
npm ERR! ACTION deps_sqlite3_gyp_locate_sqlite3_target_copy_builtin_sqlite3 ba23eeee118cd63e16015df367567cb043fed872.intermediate
npm ERR! rm ba23eeee118cd63e16015df367567cb043fed872.intermediate
npm ERR! prebuild-install warn install No prebuilt binaries found (target=16.14.0 runtime=node arch=arm64 libc= platform=darwin)
npm ERR! gyp info it worked if it ends with ok
npm …Run Code Online (Sandbox Code Playgroud) better-sqlite3 ×11
node.js ×7
sqlite ×5
electron ×2
javascript ×2
quick.db ×2
database ×1
difference ×1
express ×1
node-gyp ×1
node-modules ×1
node-sqlite3 ×1
npm ×1
npm-install ×1
sql ×1
sql-update ×1
sveltekit ×1
typeorm ×1
v8 ×1