我正在尝试使用 Node 学习“q”库。
$ node -v // -> v0.6.6
我正在使用最新的q.js
来自https://github.com/kriskowal/q/blob/master/q.js现在。我将代码复制到 q.js
文件是我的 testq.js
的同级文件文件。
代码testq.js
是:
function step1(callback) { console.log("step1"); callback("abc"); };
var Q = require("./q");
Q.fcall(step1).end();
当我运行它时:
node testq.js
它报告:
E:\WORKSPACE_NODE\TestNodeJs\q>node testq.js
step1
node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
TypeError: undefined is not a function
at step1 (E:\WORKSPACE_NODE\TestNodeJs\q\testq.js:1:112)
at makePromise.<anonymous> (E:\WORKSPACE_NODE\TestNodeJs\q\q.js:541:27)
at makePromise.promiseSend (E:\WORKSPACE_NODE\TestNodeJs\q\q.js:325:41)
at Array.0 (E:\WORKSPACE_NODE\TestNodeJs\q\q.js:787:28)
at EventEmitter._tickCallback (node.js:192:40)
我安装了v8 debugger plugin for eclipse ,逐行调试。不幸的是,我找不到错误的开始。
我是nodejs新手,请帮助我调试。例如。我应该使用什么工具?或者我应该尝试任何其他有用的方法?
更新
根据霍根的回答,代码:
function step1(callback) { console.log("step1"); };
var Q = require("./q");
Q.fcall(step1).end();
可以成功运行,没有任何错误。
但是当我尝试时:
function step1(callback) { console.log("step1"); };
var Q = require("./q");
Q.fcall(step1)
.then(function(v) {
console.log("finished: " +v);
}, function(err){
console.log(err);
})
.end();
打印:
E:\WORKSPACE_NODE\TestNodeJs\q>node testq.js
step1
finished: undefined
我仍然想要一个演示 step1
会将一些内容传递给 function(v) {console.log("finished: " +v);}
,其中v
不是undefined
.
最佳答案
让你的step1看起来像这样(修改为最后一个版本):
function step1() { console.log("step1"); return "abc" };
那么你就会幸福。
查看 Q 文档,我相信您需要 'Q.node(...) 或 Q.ncall(...) 或 Q.fcall(...)
我会更多地了解 Q,或者如果您描述您想要做什么,我可能会提供帮助。
步骤 1 接受一个参数——一个函数。
但是当你调用它时你没有定义它,所以 callback("abc");
是未定义的。
当你去掉所有不重要的东西时,也许会更清楚:
function step1(callback) { console.log("step1"); callback("abc"); };
var Q = require("q");
Q.call(step1)
关于javascript - 如何调试这段nodejs代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10416935/