我一直在研究Node.js服务器,现在正将它上传到OpenShift。我没有使用默认的./server.js文件,而是我的插入点是./bin/www。
我已经将它设置为package.json中的插入文件,如下所示:
{
"name": "NekoList",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "./bin/www"
...
},
我可以验证www
是否在./bin
此目录中,并且它是一个有效的javascript文件,可以在我的本地环境中正常运行。
根据here
但是,我可以从我的日志中看出,OpenShift仍在尝试查找./server.js
这里可能会发生什么?我可以发布哪些其他信息会有所帮助?
注意:这与this thread中的问题有关,但是,当我意识到问题实际上不是依赖问题时,我决定为真正的问题创建一个新线程。
答案 0 :(得分:1)
好吧我觉得我找到了问题。
根据您提供的信息和此处的信息:Markers files for Node.js,您必须添加标记' use_npm'使用npm start
启动服务器(它在package.json上的脚本部分中查找启动脚本),而不是:supervisor <whatever-you-gave-for-main-on-package.json
。
因此,您必须在use_npm
下添加名为.openshift/markers
的空文件。然后提交更改并进行部署。然后它应该使用项目的./bin/www
启动服务器,并且您仍然必须在package.json上使用node $OPENSHIFT_REPO_DIR/bin/www
start
。
顺便说一下,你还没有在这里给出你为package.json主要部分提供的内容。
答案 1 :(得分:0)
您正在使用"scripts"
属性,但在OpenShift上,您需要使用"main"
。这是因为OpenShift使用node-supervisor来启动和管理您的Node.js应用程序。