node.js - Openshift 上部署的 Sails.js 项目的可视化错误

标签 node.js gruntjs openshift sails.js ejs

我在 Openshift 上部署了我的 Sails 项目。 它可以工作,但我收到了 websockets 错误,并且无法加载基于 ejs 构建的页面。

我发现这些链接足以解释 grunt/openshift,但我无法解决问题。

Deploying Sails.js On Openshift

Deploy Sails.js on Openshift ... app restarting over and over

我的nodejs.log是:

DEBUG: Running node-supervisor with
DEBUG:   program 'app.js'
DEBUG:   --watch '/var/lib/openshift/537b5ae8500446c95900057f/app-root/data/.nodewatch'
DEBUG:   --ignore 'undefined'
DEBUG:   --extensions 'node|js|coffee'
DEBUG:   --exec 'node'
DEBUG: Starting child process with 'node app.js'
DEBUG: Watching directory '/var/lib/openshift/537b5ae8500446c95900057f/app-root/data/.nodewatch' for changes.
Warning: connection.session() MemoryStore is not
designed for a production environment, as it will leak
memory, and will not scale past a single process.
^[[32minfo^[[39m:
^[[32minfo^[[39m:
^[[32minfo^[[39m:    Sails.js           <|
^[[32minfo^[[39m:    v0.9.16             |\
^[[32minfo^[[39m:                       /|.\
^[[32minfo^[[39m:                      / || \
^[[32minfo^[[39m:                    ,'  |'  \
^[[32minfo^[[39m:                 .-'.-==|/_--'
^[[32minfo^[[39m:                 `--'-------'
^[[32minfo^[[39m:    __---___--___---___--___---___--___
^[[32minfo^[[39m:  ____---___--___---___--___---___--___-__
^[[32minfo^[[39m:
^[[32minfo^[[39m: Server lifted in `/var/lib/openshift/537b5ae8500446c95900057f/app-root/runtime/repo`
^[[32minfo^[[39m: To see your app, visit http://127.2.95.129:8080
^[[32minfo^[[39m: To shut down Sails, press <CTRL> + C at any time.
^[[34mdebug^[[39m: --------------------------------------------------------
^[[34mdebug^[[39m: :: Wed May 21 2014 14:26:01 GMT-0400 (EDT)
^[[34mdebug^[[39m:
^[[34mdebug^[[39m: Environment  : production
^[[34mdebug^[[39m: Host         : 127.2.95.129
^[[34mdebug^[[39m: Port         : 8080
^[[34mdebug^[[39m: --------------------------------------------------------
^[[31merror^[[39m: Server doesn't seem to be starting.
^[[31merror^[[39m: Perhaps something else is already running on port 8080 with hostname 127.2.95.129?
^[[32minfo^[[39m: handshake authorized qR_aOT3qx40k6X34CF-2
^[[32minfo^[[39m: handshake authorized tnAUouwi-d32h82rCF-3
^[[33mwarn^[[39m: websocket connection invalid
^[[32minfo^[[39m: transport end (undefined)
^[[31merror^[[39m: Error rendering view at :: /var/lib/openshift/537b5ae8500446c95900057f/app-root/runtime/repo/views/viewshows/index
^[[31merror^[[39m: Using layout located at :: /var/lib/openshift/537b5ae8500446c95900057f/app-root/runtime/repo/views/layout
^[[31merror^[[39m: Error: Failed to lookup view "viewshows/index"
    at Function.app.render (/var/lib/openshift/537b5ae8500446c95900057f/app-root/runtime/repo/node_modules/sails/node_modules/express/lib/application.js:495:17)
    at ServerResponse.res.render (/var/lib/openshift/537b5ae8500446c95900057f/app-root/runtime/repo/node_modules/sails/node_modules/express/lib/response.js:798:7)
    at ServerResponse._addResViewMethod.res.view (/var/lib/openshift/537b5ae8500446c95900057f/app-root/runtime/repo/node_modules/sails/lib/hooks/views/index.js:297:15)
    at module.exports.index (/var/lib/openshift/537b5ae8500446c95900057f/app-root/runtime/repo/api/controllers/ViewShowsController.js:32:13)
    at _bind.enhancedFn (/var/lib/openshift/537b5ae8500446c95900057f/app-root/runtime/repo/node_modules/sails/lib/router/bind.js:375:4)
    at callbacks (/var/lib/openshift/537b5ae8500446c95900057f/app-root/runtime/repo/node_modules/sails/node_modules/express/lib/router/index.js:164:37)

这是我的 app.js:

require('sails').lift(require('optimist').argv);

这是我的 local.js:

module.exports = {
  host: process.env.OPENSHIFT_NODEJS_IP || "127.0.0.1",
  port: process.env.OPENSHIFT_NODEJS_PORT || 8080,
  environment: process.env.NODE_ENV || 'development'
}

调用 'env | grep OPENSHIFT_NODEJS_PORT' 在 openshift 控制台上我收到:

OPENSHIFT_NODEJS_PORT=8080

在我看来,问题不在于端口。服务器启动并正确应答。 但是当我调用基于 ejs 构建的页面时,它会用一段 json 回答我...

{"view":{"name":"viewshows/index","root":"/var/lib/openshift/537b5ae8500446c95900057f/app-root/runtime/repo/views","defaultEngine":"ejs","ext":".ejs"}}

...并在服务器日志中打印上述错误。

有什么建议吗?

谢谢

最佳答案

我相当确定 openshift 要求您的应用程序监听由环境变量指定的特定端口,而不是 8080

您需要将 app.js 更改为使用此 openshift doc 中的主机名和端口环境变量。

关于node.js - Openshift 上部署的 Sails.js 项目的可视化错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23788086/

相关文章:

mongodb - 如何在 openshift 中检查 mongodb 齿轮空间

tomcat - OpenShift 迁移 - Conf 文件中的 ENV 变量没有像以前那样被替换

node.js - Express 3 错误中间件未被调用

javascript - 当我启用布局时,为什么 sails.js 会引发如此多的浏览器控制台错误?

javascript - 等待下载方法完成,然后再运行 next.then - node.js

angularjs - ASP.NET MVC、AngularJS、Bower 和部署站点文件夹结构

javascript - 无法让 Grunt 运行

java - 并行下载嵌入式资源导致 JMeter 测试连接超时

node.js - 无法启动 VS Code,出现未捕获的异常

mysql - 如何使用动态数组通过where子句查询mysql数据库