🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

解決済

3回答

1231閲覧

グローバルチャットでエラーが出てしまった

Kinoko_2k

総合スコア154

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

0クリップ

投稿2021/03/25 09:11

前提・実現したいこと

Discord.jsで、実行しようとしたら、エラーが出ました

発生している問題・エラーメッセージ

internal/modules/cjs/loader.js:883 throw err; ^ Error: Cannot find module '@keyv/sqlite' Require stack: - /home/kinoko/node_modules/keyv/src/index.js - /home/kinoko/renkei/kibou.js at Function.Module._resolveFilename (internal/modules/cjs/loader.js:880:15) at Function.Module._load (internal/modules/cjs/loader.js:725:27) at Module.require (internal/modules/cjs/loader.js:952:19) at require (internal/modules/cjs/helpers.js:88:18) at loadStore (/home/kinoko/node_modules/keyv/src/index.js:18:15) at new Keyv (/home/kinoko/node_modules/keyv/src/index.js:39:22) at Object.<anonymous> (/home/kinoko/renkei/kibou.js:5:16) at Module._compile (internal/modules/cjs/loader.js:1063:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10) at Module.load (internal/modules/cjs/loader.js:928:32) { code: 'MODULE_NOT_FOUND', requireStack: [ '/home/kinoko/node_modules/keyv/src/index.js', '/home/kinoko/renkei/kibou.js' ] }

該当のソースコード

js

1const Discord = require("discord.js"); 2const client = new Discord.Client(); 3const prefix = "k!"; 4const Keyv = require("keyv") 5const gmutes = new Keyv("sqlite://gmutes.sqlite", {table: "gmutes"}) 6client.on("message", async message=>{ 7if(message.author.bot) return; 8const args = message.content.slice(2).trim().split(/ +/g); 9const command = args.shift().toLowerCase(); 10 if(message.channel.name == ("kibou-global")){ 11 const gmute = (await gmutes.get(message.author.id)) || { score: 0, reason: 0 } 12 if(gmute.score != 0) return; 13 message.delete(); 14 const ch_name = "kibou-global"; 15 client.channels.cache.forEach(ch => { 16 if(ch.name === ch_name){ 17 ch.send({embed: { 18 title: `${message.author.tag}(${message.author.id})`, 19 description: message.content, 20 color: 0x800080, 21 timestamp: new Date(), 22 footer: { 23 text: message.guild.name + "(" + message.guild.id + ")" 24 }, 25 thumbnail: { 26 url: `https://cdn.discordapp.com/avatars/${message.author.id}/${message.author.avatar}.png` 27 }, 28 }})}})}; 29if(command === "gmute"){ 30 if(message.author.id === "695500134179536907||663196515384295425") return message.channel.send("あなたはBOT管理者ではありません"); 31 const [a, c] = args 32 const b = await message.channel.send("Gmuteの準備をしています...") 33 const gmute = (await gmutes.get(a)) || { score: 0, reason: 0 } 34 const muteuser = client.users.fetch(a).tag 35 gmutes.set(a, { score: 1, reason: c }) 36 if (gmute.score == 1) b.edit(`${muteuser}(${message.author.id})をGmuteしました。\n追加理由: ${c}`); 37} 38if (command === "ungmute") { 39 if (message.author.id === "695500134179536907||663196515384295425") return message.channel.send("あなたはBOT管理者ではありません"); 40 const [a, c] = args 41 const b = await message.channel.send("Gmute解除の準備をしています...") 42 const gmute = (await gmutes.get(a)) || { score: 0, reason: 0 } 43 const muteuser = client.users.fetch(a).tag 44 gmutes.set(a, { score: 0, reason: c }) 45 if (gmute.score == 0) b.edit(`${muteuser}(${message.author.id})のGmuteを解除しました。\n解除理由: ${c}`); 46} 47});

試したこと

@keyv/sqliteを入れ直した
sqlite3を入れ直した
sqliteを入れ直した

補足情報(FW/ツールのバージョンなど)

Discord.js-v12
client.token("")は省いてます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Neko7sora

2021/03/25 09:55

使用するバージョンや環境によって動作が異なります。 環境の記載をしてください。 - Windows 10 8?? linux?? ubuntu?? mac?? バージョンの記載をしてください。 - Node.js - @keyv/sqlite - sqlite3 - sqlite
Kinoko_2k

2021/03/25 10:18

node.jsが0.1.2 @keyv/sqliteが2.0.2 sqlite3が4.0.19 sqliteが4.0.19 Linux-Ubuntu 20.04.2 LTS
guest

回答3

0

頭の中で考えてコードを書き加えたので、実際に動作するかは分かりません。

gmutesをwakeupし、errorを検知するコードを加えました。

js

1const Discord = require("discord.js"); 2const client = new Discord.Client(); 3const prefix = "k!"; 4const Keyv = require("keyv") 5const gmutes = new Keyv("sqlite://gmutes.sqlite", { table: "gmutes" }) 6 7 8gmutes.on('error', err => console.error('Keyv connection error:', err)) //<--追加 9 10client.on("message", async message => { 11 if (message.author.bot) return; 12 13 const args = message.content.slice(2).trim().split(/ +/g); 14 const command = args.shift().toLowerCase(); 15 16 if (message.channel.name == ("kibou-global")) { 17 const gmute = (await gmutes.get(message.author.id)) || { score: 0, reason: 0 } 18 if (gmute.score != 0) return; 19 message.delete(); 20 const ch_name = "kibou-global"; 21 client.channels.cache.forEach(ch => { 22 if (ch.name === ch_name) { 23 ch.send({ 24 embed: { 25 title: `${message.author.tag}(${message.author.id})`, 26 description: message.content, 27 color: 0x800080, 28 timestamp: new Date(), 29 footer: { 30 text: message.guild.name + "(" + message.guild.id + ")" 31 }, 32 thumbnail: { 33 url: `https://cdn.discordapp.com/avatars/${message.author.id}/${message.author.avatar}.png` 34 }, 35 } 36 }) 37 } 38 }) 39 }; 40 41 if (command === "gmute") { 42 if (message.author.id === "695500134179536907||663196515384295425") return message.channel.send("あなたはBOT管理者ではありません"); 43 const [a, c] = args 44 const b = await message.channel.send("Gmuteの準備をしています...") 45 const gmute = (await gmutes.get(a)) || { score: 0, reason: 0 } 46 const muteuser = client.users.fetch(a).tag 47 gmutes.set(a, { score: 1, reason: c }) 48 if (gmute.score == 1) b.edit(`${muteuser}(${message.author.id})をGmuteしました。\n追加理由: ${c}`); 49 } 50 51 if (command === "ungmute") { 52 if (message.author.id === "695500134179536907||663196515384295425") return message.channel.send("あなたはBOT管理者ではありません"); 53 const [a, c] = args 54 const b = await message.channel.send("Gmute解除の準備をしています...") 55 const gmute = (await gmutes.get(a)) || { score: 0, reason: 0 } 56 const muteuser = client.users.fetch(a).tag 57 gmutes.set(a, { score: 0, reason: c }) 58 if (gmute.score == 0) b.edit(`${muteuser}(${message.author.id})のGmuteを解除しました。\n解除理由: ${c}`); 59 } 60});

投稿2021/03/25 10:13

編集2021/03/25 10:16
Neko7sora

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

一回package-lock.jsonを削除してから、

bash

1# npmの更新 2npm install -g npm 3 4# キャッシュクリア 5npm cache clean -force 6npm verify 7 8# もう一度インストール 9npm install

を実行してみてください。

投稿2021/07/17 01:03

編集2021/07/17 01:04
Waki285

総合スコア2014

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Kinoko_2k

2021/07/17 11:04

今度やってみます(実はサーバー機が離れてるから、動かせない)
guest

0

Node.jsは触ったことがほとんどないので、あっているかどうかわかりませんが、答えらしきものを見つけたので、投稿させていただきます。

GitHubのissuesに同じような質問がありました。こちらは、解決したようです。
https://github.com/lukechilds/keyv/issues/97

投稿2021/03/25 09:42

Takkun053

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問