0

这是我的设置:

  • 托管Cloud9 IDE
  • Heroku 托管环境
  • 渴望学习 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,我收到一个应用程序错误页面。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

我用谷歌搜索了它,发现与本地 cloud9 安装有关的问题,但在托管版本上没有。我还尝试将 server.js 从根目录移动到 node_modules 文件夹,但似乎无法让它工作。我的第一步是启动并运行标准的“Hello World”应用程序,以证明调试模式和 heroku 部署,一切正常。这是我遇到困难的自定义模块。

任何帮助表示赞赏。谢谢!

4

1 回答 1

1

它不在 Cloud9 上运行的原因是因为您监听的是 port8888而不是process.env.PORT.

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

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

于 2012-08-14T09:38:48.913 回答