私はすべてのモジュールを管理するためにModulesManagerを作成しました。したがって、私は "server.js"の先頭に大きな要件リストを持っていません私はマネージャのメソッドにアクセスしようとしています。私のサーバーがクラッシュし、マネージャメソッドが関数ではないというエラーがスローされます。私はここで間違ってやって本当にわからないんだけどmodule.exportsは関数を持つオブジェクトをエクスポートしません
TypeError: moduleManager.sqlString is not a function
が、これは私は答えをオンラインで見て試してみたが、誰もが何か違うと何も仕事を言っている、愚かなエラーの可能性があります。
モジュールマネージャー(manager.js):
const sqlSetup = require("./sqlSetup.js");
const sqlSafeString = require("./sqlString.js");
function Manager(){
this.sqlString = function(query){
return sqlSafeString.getSqlSafeString(query);
},
this.sql = function(){
return sqlSetup;
}
}
module.exports = Manager;
モジュールSQL(sqlSetup.js):
const SqlString = require('sqlstring');
function getSqlSafeString(query){
//format query to fit in MySQL
var format = SqlString.escape(query);
return format;
}
module.exports = getSqlSafeString;
これは私のトラヴィスのためのテストで、私が作るしようとしていることを築きますモジュールマネージャのパスは良いですが、問題は実際に私が理解していない "ModuleManager.js"にあります...
require('dotenv').config();
const Discord = require("discord.js");
const client = new Discord.Client();
const token = process.env.MOISTY;
const moduleManager = require("../modules/manager.js");
const assert = require("assert");
console.log("MAKE SURE MOISTY IS OFFLINE!");
client.login(token);
client.on('ready',() => {
//confirm login
console.log("MOISTY:200");
//Assert
assert.deepEqual(moduleManager.sqlString("sample text"), "sample test");
//terminate the session
process.exit();
});
私はverではありませんこれは簡単な質問かもしれません...
あなたのコードを 'module.exports = new Manager();'に変更した後、エラーが 'TypeError:moduleManager.sqlStringが関数ではない'であることを確かめていますか?私はそれが 'TypeError:sqlSafeString.getSqlSafeStringは関数ではない'であると確信しています。 –
@ t.nieseあなたは正しいです!私はいつもインスタンスを作成する必要があるからですか?これは感謝しています! – MathieuAuclair
いいえ、私は答えの両方の問題を説明しました。とにかく、あなたはあなたの答えを新しい問題に更新するべきではありません。そうしないと、以前のすべての答えが間違っています。 –