在以下代码中,我得到了此错误:
TypeError[ERR_INVALID_ARG_TYPE]:原始参数的类型必须是Function。接收类型未定义
const sqlite3 = require('sqlite3').verbose();
const util = require('util');
async function getDB() {
return new Promise(function(resolve, reject) {
let db = new sqlite3.Database('./project.db', (err) => {
if (err) {
console.error(err.message);
reject(err)
} else {
console.log('Connected to the project database.');
resolve(db)
}
});
return db
});
}
try {
// run these statements once to set up the db
let db = getDB();
db.run(`CREATE TABLE services(id INTEGER PRIMARY KEY, service text, date text)`);
db.run(`INSERT INTO services(id, service, date) VALUES (1, 'blah', '01-23-1987')`)
} catch(err) {
console.log(err)
}
const db = getDB();
const dbGetAsync = util.promisify(db.get);
exports.get = async function(service) {
let sql = `SELECT Id id,
Service service,
Date date
FROM services
WHERE service = ?`;
const row = await dbGetAsync(sql, [service], (err, row) => {
if (err) {
console.error(err.message);
reject(err)
}
let this_row = {'row': row.id, 'service': row.service};
this_row ? console.log(row.id, row.service, row.date) : console.log(`No service found with the name ${service}`);
resolve(this_row)
});
return row;
}
let row = exports.get('blah')
它说问题在第31行:const dbGetAsync=util.promisify(db.get);
$ mocha src/tests/testStates.js
C:\Users\Cody\AppData\Roaming\npm\node_modules\mocha\node_modules\yargs\yargs.js:1163
else throw err
^
TypeError [ERR_INVALID_ARG_TYPE]: The "original" argument must be of type Function. Received type undefined
at Object.promisify (internal/util.js:256:11)
at Object.<anonymous> (C:\Users\Cody\Projects\goggle-indexer\src\state.js:32:25)
at Module._compile (internal/modules/cjs/loader.js:701:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
at Module.load (internal/modules/cjs/loader.js:600:32)
at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
at Function.Module._load (internal/modules/cjs/loader.js:531:3)
at Module.require (internal/modules/cjs/loader.js:637:17)
at require (internal/modules/cjs/helpers.js:22:18)
at Object.<anonymous> (C:\Users\Cody\Projects\goggle-indexer\src\tests\testStates.js:7:15)
at Module._compile (internal/modules/cjs/loader.js:701:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
at Module.load (internal/modules/cjs/loader.js:600:32)
at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
at Function.Module._load (internal/modules/cjs/loader.js:531:3)
at Module.require (internal/modules/cjs/loader.js:637:17)
at require (internal/modules/cjs/helpers.js:22:18)
at C:\Users\Cody\AppData\Roaming\npm\node_modules\mocha\lib\mocha.js:330:36
at Array.forEach (<anonymous>)
at Mocha.loadFiles (C:\Users\Cody\AppData\Roaming\npm\node_modules\mocha\lib\mocha.js:327:14)
at Mocha.run (C:\Users\Cody\AppData\Roaming\npm\node_modules\mocha\lib\mocha.js:804:10)
at Object.exports.singleRun (C:\Users\Cody\AppData\Roaming\npm\node_modules\mocha\lib\cli\run-helpers.js:207:16)
at exports.runMocha (C:\Users\Cody\AppData\Roaming\npm\node_modules\mocha\lib\cli\run-helpers.js:300:13)
at Object.exports.handler.argv [as handler] (C:\Users\Cody\AppData\Roaming\npm\node_modules\mocha\lib\cli\run.js:296:3)
at Object.runCommand (C:\Users\Cody\AppData\Roaming\npm\node_modules\mocha\node_modules\yargs\lib\command.js:242:26)
at Object.parseArgs [as _parseArgs] (C:\Users\Cody\AppData\Roaming\npm\node_modules\mocha\node_modules\yargs\yargs.js:1087:28)
at Object.parse (C:\Users\Cody\AppData\Roaming\npm\node_modules\mocha\node_modules\yargs\yargs.js:566:25)
at Object.exports.main (C:\Users\Cody\AppData\Roaming\npm\node_modules\mocha\lib\cli\cli.js:63:6)
at Object.<anonymous> (C:\Users\Cody\AppData\Roaming\npm\node_modules\mocha\bin\_mocha:10:23)
at Module._compile (internal/modules/cjs/loader.js:701:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
at Module.load (internal/modules/cjs/loader.js:600:32)
at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
at Function.Module._load (internal/modules/cjs/loader.js:531:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:754:12)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
我在使用promisify图书馆时遇到问题。
getDB是一个返回Promise的异步函数,因此您必须等待promise来解析或链接一个,然后
使用其返回的值:
// you have to put it inside an async function
const db = await getDB();
const dbGetAsync = util.promisify(db.get);
getDB().then(function(db){
return util.promisify(db.get);
}).then(function(getFunction){
// use get
})
首先不需要使用返回db
在new Promise()中,因为它不希望回调函数返回任何值。
由于getDB()是一个异步函数,因此需要将其与
wait
关键字一起使用以获取值,或者在的处理函数中可用。然后
。
您多次调用
getDB()
对我来说毫无意义。
它是更好地阅读,如果而不是直接分配一个匿名函数导出对象键像这样
exports.get=async函数()
,然后使用它从导出对象在同一个文件中使用,这将是更好地定义一个名为get的函数,然后使用它以及导出它。
您正在使用拒绝和解析关键字之外的新promise()构造函数,这是不可能的。
我已经重写了你的代码,我不确定我是否遗漏了什么,但是请看一看,如果你仍然面临任何问题,请通知我。
const sqlite3 = require("sqlite3").verbose();
const util = require("util");
async function getDB() {
return new Promise(function(resolve, reject) {
let db = new sqlite3.Database("./project.db", err => {
if (err) {
console.error(err.message);
reject(err);
} else {
console.log("Connected to the project database.");
resolve(db);
}
});
});
}
try {
// run these statements once to set up the db
let db = await getDB();
db.run(
`CREATE TABLE services(id INTEGER PRIMARY KEY, service text, date text)`
);
db.run(
`INSERT INTO services(id, service, date) VALUES (1, 'blah', '01-23-1987')`
);
} catch (err) {
console.log(err);
}
const db = await getDB();
const dbGetAsync = util.promisify(db.get);
async function get(service) {
let sql = `SELECT Id id, Service service, Date date FROM services WHERE service = ?`;
try {
const row = await dbGetAsync(sql, [service]);
let this_row = { row: row.id, service: row.service };
this_row
? console.log(row.id, row.service, row.date)
: console.log(`No service found with the name ${service}`);
return row;
} catch (err) {
console.error(err.message);
}
}
let row = await get("blah");
exports.get = get;
我得到了这个错误,因为我使用的是旧的节点版本(8.17.0),更新节点到一个新的版本(12.14.0)修复了这个错误。
我在React做一个项目,遇到了一个让我难堪的问题。 每当我运行时,就会出现以下错误: TypeError[ERR_INVALID_ARG_TYPE]:路径参数必须是字符串类型。接收类型未定义 我不知道为什么会发生这种情况,如果有人经历过这种情况,我将不胜感激。
我正试图使用邮递员将图像上传到firebase。运行时,我向路由发送post请求以及授权标头和图像文件,但控制台中出现以下错误: TypeError[ERR_INVALID_ARG_TYPE]:“path”参数必须是string类型。接收类型未定义 完整错误消息:
我正在使用v12.2.0库编写一个discord bot,出现以下错误: 等待dTypeError[ERR_INVALID_ARG_TYPE]:id参数必须是字符串类型。收到未定义 这是我的代码:
问题内容: 我正在React的一个项目上工作,遇到了一个让我感到困惑的问题。 每当我运行时,都会出现此错误: TypeError [ERR_INVALID_ARG_TYPE]:“路径”参数必须为字符串类型。接收类型未定义 我不知道为什么会这样,如果有人经历过,我将不胜感激。 问题答案: 要解决此问题,只需升级 react-scripts 软件包(使用来检查最新版本): 将您的 package.js
我正在用python制作一个潜艇游戏,但当我试图运行它时,解释器给了我一个非常奇怪的错误:“TypeError:参数1必须是pygame.Surface,而不是type。”我试图在网上搜索我的答案,但这似乎不是很常见的错误。我也试着自己去发现错误,但我觉得一切都很好。下面是我认为错误所在的部分代码:
我正在开发一个electron应用程序,它试图从unsplash API下载一张照片,并将其设置为壁纸。当我调用API时,我得到200 OK状态并获得下载URL,但当我尝试使用axios stream方法下载照片时,我得到以下错误: 类型错误[ERR_INVALID_ARG_TYPE]:url参数必须是字符串类型。接收类型未定义 这是功能代码: 当我试图在函数中console.logDownloa