mirror of
https://github.com/ZHANGTIANYAO1/teamspeak-music-bot.git
synced 2026-10-01 20:42:50 +08:00
better-sqlite3 stopped publishing prebuilt binaries for Node 20's ABI
(115) in 12.10.0 - upstream, not a mirror gap:
12.8.0 / 12.9.0 115 127 131 137 141
12.10.0+ 127 137 141 147
`better-sqlite3: ^12.8.0` resolves well past that, so every Node 20
install 404'd on the CDN, fell through to the source build, and demanded
Python plus a C++ toolchain before the bot could start at all. package.json
went on claiming `^20.19.0` worked, and the README went on recommending
Node 20 as one of two blessed versions. It was not a supported
configuration in any meaningful sense - it was a trap.
So say so up front: engines, both setup scripts, and the Docker images now
require Node 22.12+ (or 24+, which still needs a source build for opus).
The version gate in setup.bat / setup.sh is kept byte-identical to the
engines range, as before.
Also copy scripts/lib/console-log.mjs into the production image. The
previous commit had check-native.mjs import it, and the Dockerfile copies
check-native.mjs in on its own for `docker exec ... npm start` - without
its dependency that preflight now dies with ERR_MODULE_NOT_FOUND.
BREAKING CHANGE: Node 20 is no longer supported. Node 22.12 LTS or newer
is required; setup refuses to run on anything older.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
65 lines
1.8 KiB
JSON
65 lines
1.8 KiB
JSON
{
|
|
"name": "tsmusicbot",
|
|
"version": "0.1.0",
|
|
"description": "TeamSpeak music bot with NetEase Cloud Music and QQ Music support",
|
|
"type": "module",
|
|
"engines": {
|
|
"node": "^22.12.0 || >=24.0.0"
|
|
},
|
|
"scripts": {
|
|
"dev": "tsx watch src/index.ts",
|
|
"build": "tsc && npm run build:web",
|
|
"build:web": "cd web && npm run build",
|
|
"check:native": "node scripts/check-native.mjs",
|
|
"prestart": "node scripts/check-native.mjs",
|
|
"start": "node dist/index.js",
|
|
"play": "node dist/index.js",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest"
|
|
},
|
|
"license": "MIT",
|
|
"dependencies": {
|
|
"@discordjs/opus": "^0.10.0",
|
|
"@honeybbq/teamspeak-client": "^0.2.1",
|
|
"@koa/router": "^15.4.0",
|
|
"@sansenjian/qq-music-api": "~2.4.0",
|
|
"axios": "^1.14.0",
|
|
"bcryptjs": "^2.4.3",
|
|
"better-sqlite3": "^12.8.0",
|
|
"chalk": "^5.6.2",
|
|
"cookie-parser": "^1.4.7",
|
|
"express": "^5.2.1",
|
|
"ffmpeg-static": "^5.3.0",
|
|
"koa": "^3.2.0",
|
|
"koa-bodyparser": "^4.4.1",
|
|
"koa-static": "^5.0.0",
|
|
"NeteaseCloudMusicApi": "~4.32.0",
|
|
"pino": "^10.3.1",
|
|
"ts3-nodejs-library": "^3.5.1",
|
|
"tweetnacl": "^1.0.3",
|
|
"ws": "^8.20.0",
|
|
"yt-dlp-wrap": "^2.3.12"
|
|
},
|
|
"devDependencies": {
|
|
"@types/bcryptjs": "^2.4.6",
|
|
"@types/better-sqlite3": "^7.6.13",
|
|
"@types/cookie-parser": "^1.4.10",
|
|
"@types/express": "^5.0.6",
|
|
"@types/node": "^25.5.0",
|
|
"@types/supertest": "^6.0.3",
|
|
"@types/ws": "^8.18.1",
|
|
"supertest": "^7.2.2",
|
|
"tsx": "^4.21.0",
|
|
"typescript": "^6.0.2",
|
|
"vitest": "^4.1.2"
|
|
},
|
|
"allowScripts": {
|
|
"@discordjs/opus@0.10.0": true,
|
|
"better-sqlite3@12.11.1": true,
|
|
"cpu-features@0.0.10": true,
|
|
"esbuild@0.28.1": true,
|
|
"ffmpeg-static@5.3.0": true,
|
|
"ssh2@1.17.0": true
|
|
}
|
|
}
|