使用Node.io运行作业时出现问题

时间:2011-05-28 03:58:54

标签: javascript node.js

我正在尝试完成Node.io here的教程作业。我在运行内置模块时没有遇到任何问题:

echo "mastercard.com" | node.io -s pagerank

或者:

node.io query "http://www.reddit.com/" a.title

然而,当我尝试自己的模块时:

var nodeio= require('node.io');
exports.job = new nodeio.Job({
input: false,
run: function() {
    this.emit('Hello World');
}

});

尝试运行:

node.io hello

我明白了:

ERROR: Failed to load job "hello". Please check that the job exists and compiles correctly.

调试给了我这个:

DEBUG: {"stack":"Error: Cannot find module 'node.io'\n    at Function._resolveFilename (module.js:322:11)\n    at Function._load (module.js:267:25)\n    at require (module.js:351:19)\n    at Object.<anonymous> (/Users/username/Documents/Nodejs/hello.js:1:75)\n    at Module._compile (module.js:407:26)\n    at Object..js (module.js:413:10)\n    at Module.load (module.js:339:31)\n    at Function._load (module.js:298:12)\n    at require (module.js:351:19)\n    at [object Object].loadJob (/opt/local/lib/node_modules/node.io/lib/node.io/processor.js:294:37)","message":"Cannot find module 'node.io'"}

我确定我做的事情很愚蠢。有什么想法吗?

编辑:回复以下答案

我也试过这个:

.npm/node.io/0.2.9-4/package/bin/io -s hello.js

node_modules/node.io/bin/node.io -s hello.js

得到这个结果:

node.js:134
    throw e; // process.nextTick error, or 'error' event on first tick
    ^
Error: Cannot find module 'node.io'
at Function._resolveFilename (module.js:322:11)
at Function._load (module.js:267:25)
at require (module.js:351:19)
at Object.<anonymous> (/Users/thaymore/.npm/node.io/0.2.9-4/package/bin/io:2:1)
at Module._compile (module.js:407:26)
at Object..js (module.js:413:10)
at Module.load (module.js:339:31)
at Function._load (module.js:298:12)
at Array.<anonymous> (module.js:426:10)
at EventEmitter._tickCallback (node.js:126:26)

3 个答案:

答案 0 :(得分:5)

这是NPM如何安装包含node.io的模块的“功能”,以便稍后可以通过节点找到它。如果仔细查看堆栈,错误是节点无法找到node.io本身。最简单的解决方案是安装到您的主目录,因为默认设置知道如何从那里进行操作。使用“npm install node.io”而不使用-g选项。如果您使用-g,请准备好使用NODE_PATH或其他几个选项,请参阅communication from isaacs。无论哪种方式,“节点问候”现在都可以使用。

请注意,节点社区并不担心强烈的意见,在选择最适合您情况的技术解决方案时,其中大部分都可以被视为噪音。(/ p>

答案 1 :(得分:2)

我能够让它像这样运行:

$ npm install node.io
$ node_modules/node.io/bin/node.io -s test.js
Hello World!

test.js只是:

var nodeio = require('node.io');
exports.job = new nodeio.Job({
    input: false,
    run: function () {
        this.emit('Hello World!');
    }
});

答案 2 :(得分:0)

我遇到了同样的问题,这对我有用。

NODE_PATH="$NODE_JS_HOME/lib/node_modules/";
export NODE_PATH

将上述内容放在/etc/profile~/.profile NODE_JS_HOME所在的位置node.js

edit: 此页面http://nodejs.org/api/modules.html还建议将node_modules文件夹放入$NODE_PATH