我正在运行node.js应用程序,由于某些原因,当需要Bluebird模块时,node应用程序失败。
节点版本:require('bluebird')
蓝鸟版本:0.10.40
这真的很奇怪,我唯一需要做的就是这里的堆栈跟踪:

TypeError: Cannot call method 'split' of undefined
    at Object.setBounds (app/node_modules/bluebird/js/release/debuggability.js:614:48)
    at module.exports (app/node_modules/bluebird/js/release/promise.js:762:11)
    at Object.<anonymous> (app/node_modules/bluebird/js/release/bluebird.js:9:36)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    var firstStackLines = firstLineError.stack.split("\n");

同样,应用程序运行良好。当我添加这一行3.3.4时,它崩溃了,我得到了这个堆栈跟踪。你知道这个错误是什么原因吗?
[编辑]
require('bluebird')
> console.log(firstLineError);
[Error]
> console.log(firstLineError.message);

> console.log(firstLineError.stack);
undefined
> console.log(firstLineError.toString());
Error: Error
> console.log(firstLineError instanceof Error);
True

它是一个基本上为空的错误对象
临时解决方案
当我将行node_modules/bluebird/js/release/debuggability.js:614:48更改为
var firstStackLines = (firstLineError.stack) ? firstLineError.stack.split("\n") : "";

615线到
var lastStackLines = (lastLineError.stack) ? lastLineError.stack.split("\n") : "";

它工作得很好。但不确定这是否有持久的影响

最佳答案

我也有过类似的失败,更具体地说:

.../node_modules/bluebird/js/release/debuggability.js:673
var firstStackLines = firstLineError.stack.split("\n");

使用节点6.2.2和蓝鸟^3.4.1时。
使用节点v6.2.2升级到bluebird^3.4.6有助于修复错误。

关于node.js - Node 要求 Bluebird 失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36700567/

10-12 06:48