如何修复 pg-promise 错误 "Promise library must be specified."?

How to fix pg-promise error "Promise library must be specified."?

我使用 pg-promise 在 ExpressJS 中创建了一个基本的 API 来与我的 PostgreSQL 数据库交互。当 运行 它在 Windows 上时,它工作正常。然后我将它移动到 Ubuntu 15.04,但是当我尝试启动它时出现以下错误:

/node_modules/pg-promise/lib/promise.js:46

throw new TypeError("Promise library must be specified.");

问题

Use the source, Luke!

查看错误信息中的文件:

    if (typeof Promise === 'undefined') {
        // ES6 Promise isn't supported, NodeJS is pre-0.12;
        throw new TypeError("Promise library must be specified.");
    }

您的 Ubuntu 发行版中 Node.js 的版本非常旧。

解决方案

我建议您升级 Node.js,例如使用 LTS 版本 (4.x)。

另一种方法是将承诺库指定为 instructed on the project's website

专业提示nvm 是管理 Node.js.

版本的绝佳解决方案

更新 - 1

库从5.6.0版本开始,不再支持Node.js0.10.x和0.12.x,需要Node.js4.x 作为新的最小值。

因此,该错误已被忽略,因为如果您未指定任何自定义承诺库,该库将始终成功默认为 ES6 Promise。

如果您在 4.0 之前的 Node.js 下尝试 运行 它,它会在 its loader 中抛出 Minimum Node.js version required by pg-promise is 4.x

更新 - 2

版本 6.7.0 及更高版本要求 Node.js 4.5.0 作为最低要求。