尝试在node.js中创建自定义模块并从另一个文件引用

时间:2012-08-13 20:29:46

标签: node.js heroku cloud9-ide

这是我的设置:

  • 托管Cloud9 IDE
  • Heroku Hosting Environment
  • 渴望学习node.js

我正在完成http://www.nodebeginner.org

中的教程

Manuel展示了如何创建名为server.js的自定义模块:

var http = require("http");

function start() {
  function onRequest(request, response) {
    console.log("Request received.");
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World");
response.end();
}

http.createServer(onRequest).listen(8888);
console.log("Server has started.");
}

exports.start = start;

他展示了如何从index.js引用这个自定义模块:

var server = require("./server");
server.start();

我尝试在cloud9 ide中运行index.js,但它挂起或者给我一个Service Temporarily Unavailable错误。我认为这可能是cloud9的一个问题,所以我将它推送到我的Heroku实例。从Heroku,我收到一个Application Error页面。 Heroku日志显示:

←[33m2012-08-13T19:03:19+00:00 heroku[slugc]:←[0m Slug compilation finished
←[35m2012-08-13T19:03:21+00:00 heroku[web.1]:←[0m Starting process with command `node index.js`
←[35m2012-08-13T19:03:21+00:00 app[web.1]:←[0m
←[35m2012-08-13T19:03:21+00:00 app[web.1]:←[0m     at Object.<anonymous> (/app/index.js:1:70)
←[35m2012-08-13T19:03:21+00:00 app[web.1]:←[0m     at Module._compile (module.js:446:26)
←[35m2012-08-13T19:03:21+00:00 app[web.1]:←[0m     at Object..js (module.js:464:10)
←[35m2012-08-13T19:03:21+00:00 app[web.1]:←[0m Error: require.paths is removed. Use node_modules folders, or the NODE_PATH environment variable instead.
←[35m2012-08-13T19:03:21+00:00 app[web.1]:←[0m     at Function.<anonymous> (module.js:383:11)
←[35m2012-08-13T19:03:21+00:00 app[web.1]:←[0m     at Module.load (module.js:353:31)
←[35m2012-08-13T19:03:21+00:00 app[web.1]:←[0m     at Function._load (module.js:311:12)
←[35m2012-08-13T19:03:21+00:00 app[web.1]:←[0m     at Array.0 (module.js:484:10)
←[35m2012-08-13T19:03:21+00:00 app[web.1]:←[0m     at EventEmitter._tickCallback(node.js:190:38)
←[35m2012-08-13T19:03:23+00:00 heroku[web.1]:←[0m Process exited with status 1
←[35m2012-08-13T19:03:23+00:00 heroku[web.1]:←[0m State changed from starting to crashed

我用Google搜索并发现了与本地cloud9安装有关的问题,但托管版本没有任何内容。我也尝试将server.js从root用户移动到node_modules文件夹,但似乎无法使其工作。我的第一步是启动并运行标准的“Hello World”应用程序,以证明调试模式和heroku部署,并且一切正常。这是我遇到困难的自定义模块。

感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:1)

它不能在Cloud9上运行的原因是因为您收听端口8888而不是process.env.PORT

您显示的heroku错误是一种不同类型的错误,它抱怨删除require.paths函数,该函数已在节点0.4.x中删除。所以这是完全不同的东西。您确定要查看正确的日志文件吗?将端口更改为process.env.PORT无论如何都应该可以正常工作。

如果您想查看codez,我将它们放在Cloud9项目上:webserver