我正在尝试学习带有节点的“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)
我为 eclipse 安装了 v8 调试器插件,逐行调试。不幸的是,我找不到错误开始。
我是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
.