我正在运行node.js应用程序,出于某种原因,当需要bluebird模块require('bluebird')
时,节点应用程序失败。
0.10.40
3.3.4
这真的很奇怪,我唯一要做的就是这里的堆栈跟踪:
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");
再次,该应用程序运行正常。当我添加这一行require('bluebird')
时,它崩溃了,我得到了这个堆栈跟踪。关于这个错误来自何处的任何想法?
[编辑]
在第node_modules/bluebird/js/release/debuggability.js:614:48
行
> 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
这是一个基本为空的Error对象
临时解决方案
当我将行node_modules/bluebird/js/release/debuggability.js:614
更改为
var firstStackLines = (firstLineError.stack) ? firstLineError.stack.split("\n") : "";
和第615行到
var lastStackLines = (lastLineError.stack) ? lastLineError.stack.split("\n") : "";
它运作得很好。不确定这是否会产生持久影响
答案 0 :(得分:1)
我有类似的失败,更具体地说:
.../node_modules/bluebird/js/release/debuggability.js:673
var firstStackLines = firstLineError.stack.split("\n");
将节点6.2.2与bluebird ^ 3.4.1。
一起使用时使用节点v6.2.2升级到bluebird ^ 3.4.6有助于修复错误。
答案 1 :(得分:0)
手动删除node_modules文件夹并重新运行npm install
,因为它听起来像NPM没有正确安装。
答案 2 :(得分:0)
您使用的是最新版本的Bluebird,其中包含过时的节点版本。
答案 3 :(得分:0)
我遇到的问题是我正在使用另一个正在修改pretty-error
对象的模块console
,因此bluebird
的错误处理正在接收一个变异的console
对象这不是bluebird
预期的形状。