{"record":{"id":"728d3933485a6958","repo":"petkaantonov/bluebird","slug":"the-target-of-promisifyall-must-be-an-object-or-a","errorCode":null,"errorMessage":"the target of promisifyAll must be an object or a function\n\n    See http://goo.gl/MqrFmX\n","messagePattern":"the target of promisifyAll must be an object or a function\n\n    See http://goo\\.gl/MqrFmX\n","errorType":"validation","errorClass":"TypeError","httpStatus":null,"severity":"error","filePath":"src/promisify.js","lineNumber":297,"sourceCode":"\nPromise.promisify = function (fn, options) {\n    if (typeof fn !== \"function\") {\n        throw new TypeError(FUNCTION_ERROR + util.classString(fn));\n    }\n    if (isPromisified(fn)) {\n        return fn;\n    }\n    options = Object(options);\n    var receiver = options.context === undefined ? THIS : options.context;\n    var multiArgs = !!options.multiArgs;\n    var ret = promisify(fn, receiver, multiArgs);\n    util.copyDescriptors(fn, ret, propsFilter);\n    return ret;\n};\n\nPromise.promisifyAll = function (target, options) {\n    if (typeof target !== \"function\" && typeof target !== \"object\") {\n        throw new TypeError(PROMISIFY_TYPE_ERROR);\n    }\n    options = Object(options);\n    var multiArgs = !!options.multiArgs;\n    var suffix = options.suffix;\n    if (typeof suffix !== \"string\") suffix = defaultSuffix;\n    var filter = options.filter;\n    if (typeof filter !== \"function\") filter = defaultFilter;\n    var promisifier = options.promisifier;\n    if (typeof promisifier !== \"function\") promisifier = makeNodePromisified;\n\n    if (!util.isIdentifier(suffix)) {\n        throw new RangeError(SUFFIX_NOT_IDENTIFIER);\n    }\n\n    var keys = util.inheritedDataKeys(target);\n    for (var i = 0; i < keys.length; ++i) {\n        var value = target[keys[i]];\n        if (keys[i] !== \"constructor\" &&","sourceCodeStart":279,"sourceCodeEnd":315,"githubUrl":"https://github.com/petkaantonov/bluebird/blob/c220cfe480868e2f5c5de4fe8bb3b04b97588d7f/src/promisify.js#L279-L315","documentation":"`Promise.promisifyAll(target)` requires the target to be an object or a function, since it enumerates and copies the target's properties to build suffixed promisified versions. Any other type (string, number, boolean, null, undefined) throws this TypeError.","triggerScenarios":"`Promise.promisifyAll(null)`; passing a module namespace that failed to load (undefined); passing a primitive like `Promise.promisifyAll('fs')`; requiring a CommonJS module with `import` so you get the module wrapper's default mismatch.","commonSituations":"Failed/bad require producing undefined at startup; ESM/CJS interop giving a string or unexpected default export; typo'd variable holding a primitive.","solutions":["Pass the module object: `Promise.promisifyAll(require('fs'))`.","Check the require/import resolves to a defined object or function before calling.","For ESM interop, use `mod.default ?? mod` before promisifyAll."],"exampleFix":"// before\nconst fs = require('fs'); const pfs = Promise.promisifyAll(fs.path); // undefined\n// after\nconst pfs = Promise.promisifyAll(fs);","handlingStrategy":"validation","validationCode":"const mod = require('fs');\nif (mod == null || (typeof mod !== 'object' && typeof mod !== 'function')) {\n  throw new TypeError('promisifyAll target must be an object or function');\n}\nPromise.promisifyAll(mod);","typeGuard":"const isPromisifyAllTarget = (v) => v != null && (typeof v === 'object' || typeof v === 'function');","tryCatchPattern":"try { Promise.promisifyAll(target); } catch (e) {\n  if (e instanceof TypeError && String(e).includes('promisifyAll')) {\n    throw new Error('Bad promisifyAll target: ' + String(target));\n  }\n  throw e;\n}","preventionTips":["Log/verify the require result before promisifyAll.","Handle ESM/CJS interop with `mod.default ?? mod`.","Never pass primitives or possibly-undefined module handles."],"tags":["typeerror","promisifyall","wrong-type"],"backgroundTag":"promisify-target-not-object","analyzedSha":"c220cfe480868e2f5c5de4fe8bb3b04b97588d7f","analyzedAt":"2026-09-02T02:30:20.863Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-09T06:17:21.866Z"}