ssh连接关闭后无法访问Node.js模块

ssh连接关闭后无法访问Node.js模块,node.js,express,ssh,passport.js,Node.js,Express,Ssh,Passport.js,我用Express和MongoDB在Node.js中编写了我的第一个Web应用程序。作为基础,我已经使用了 在本地测试服务器时,以及在服务器(我通过SSH连接到的Ubuntu服务器,用于在断开连接后保持进程运行)上运行时,一切都运行顺利。我遇到的问题是,当断开与服务器的连接时,一开始像符咒一样工作的网页会在我面前抛出错误(请参阅下面的错误消息) 节点进程似乎一直在运行,但在断开SSH连接时出现了一些问题。当通过SSH重新连接时,一切都会像往常一样直接开始工作 有身份证吗 编辑: 我意识到PM2的

我用Express和MongoDB在Node.js中编写了我的第一个Web应用程序。作为基础,我已经使用了

在本地测试服务器时,以及在服务器(我通过SSH连接到的Ubuntu服务器,用于在断开连接后保持进程运行)上运行时,一切都运行顺利。我遇到的问题是,当断开与服务器的连接时,一开始像符咒一样工作的网页会在我面前抛出错误(请参阅下面的错误消息)

节点进程似乎一直在运行,但在断开SSH连接时出现了一些问题。当通过SSH重新连接时,一切都会像往常一样直接开始工作

有身份证吗

编辑: 我意识到PM2的集群模式与Passport中使用的会话不兼容,从而设法减少了一些错误。现在,我用-x启动PM2,在断开SSH连接并尝试重新加载页面时,浏览器中出现以下错误:

Error: Failed to lookup view "index"
    at Function.app.render (/home/ubuntuserver/appname/node_modules/express/lib/application.js:489:17)
    at ServerResponse.res.render (/home/ubuntuserver/appname/node_modules/express/lib/response.js:755:7)
    at exports.index (/home/ubuntuserver/appname/routes/basic.js:4:7)
    at callbacks (/home/ubuntuserver/appname/node_modules/express/lib/router/index.js:161:37)
    at param (/home/ubuntuserver/appname/node_modules/express/lib/router/index.js:135:11)
    at pass (/home/ubuntuserver/appname/node_modules/express/lib/router/index.js:142:5)
    at Router._dispatch (/home/ubuntuserver/appname/node_modules/express/lib/router/index.js:170:5)
    at Object.router (/home/ubuntuserver/appname/node_modules/express/lib/router/index.js:33:10)
    at Context.next (/home/ubuntuserver/appname/node_modules/express/node_modules/connect/lib/proto.js:190:15)
    at Context.actions.pass (/home/ubuntuserver/appname/node_modules/passport/lib/passport/context/http/actions.js:77:8)

我认为您需要在应用程序中明确指定
app.set('views',dirname+'/views')
,以避免使用
process.cwd()
的明示默认值。PM2改变了进程当前的工作目录,或者发生了一些奇怪的事情。这可能与您的代码无关,而与您的服务器环境有关,因此很难进行远程故障排除。您可以尝试使用upstart而不是PM2。

请发布此文件中的代码:
/home/ubuntuserver/appname/routes/basic.js:4:7
。这是一个基本的文件系统布局,与您的express设置相结合,
app.set('views',thispath非常重要)
。因此,我们需要查看存储视图文件的文件系统结构,以及如何配置express和对
res.render
的调用。我的basic.js基本上就是
var mongoose=require('mongoose');exports.index=函数(req,res){res.render('index',{user:req.user});}我注意到express使用
this.set('views',process.cwd()+'/views')
设置视图文件夹在其application.js文件中的位置。当通过SSH和logging process.cwd()连接时,我得到:
/home/ubuntuserver/
,但当断开SSH时,我得到
(无法访问)
。我尝试将process.cwd()更改为实际位置,但仍然存在相同的问题。似乎Express的application.js中设置的“视图”没有被使用。我想我有什么发现。我已经尝试过硬编码
app.set('views','/home///views')在我的应用程序中。当使用Forever和PM2运行它时,一切都正常工作,直到我断开SSH,然后找不到视图,然后当我再次重新连接时,一切又开始工作。当我断开SSH时,似乎无法访问
/home/..
。我应该将我的应用程序放在服务器上的什么位置才能始终访问它?我已经成功地将应用程序放在根目录(/)中,然后使用sudo启动永久或PM2进程。我知道这肯定不是idéal。我不喜欢设置服务器,因为你可能会注意到,所以任何关于如何做的idéas都可以使用。
Error: Failed to lookup view "index"
    at Function.app.render (/home/ubuntuserver/appname/node_modules/express/lib/application.js:489:17)
    at ServerResponse.res.render (/home/ubuntuserver/appname/node_modules/express/lib/response.js:755:7)
    at exports.index (/home/ubuntuserver/appname/routes/basic.js:4:7)
    at callbacks (/home/ubuntuserver/appname/node_modules/express/lib/router/index.js:161:37)
    at param (/home/ubuntuserver/appname/node_modules/express/lib/router/index.js:135:11)
    at pass (/home/ubuntuserver/appname/node_modules/express/lib/router/index.js:142:5)
    at Router._dispatch (/home/ubuntuserver/appname/node_modules/express/lib/router/index.js:170:5)
    at Object.router (/home/ubuntuserver/appname/node_modules/express/lib/router/index.js:33:10)
    at Context.next (/home/ubuntuserver/appname/node_modules/express/node_modules/connect/lib/proto.js:190:15)
    at Context.actions.pass (/home/ubuntuserver/appname/node_modules/passport/lib/passport/context/http/actions.js:77:8)