Parse Server + Express - ParseError 和站点问题 dying/restarting
Parse Server + Express - Issues with ParseError and site dying/restarting
我已经将 Bitnami Parse 堆栈部署到 Google 云 VM。这个堆栈基本上是 Apache 运行ning 作为代理,然后是处理解析服务器和仪表板等的 MEAN 堆栈。
当访问仪表板并发送单独的 CURL 请求以测试它是否可用时,一切似乎都工作正常。
然而,这似乎有一个致命的缺陷。当 Parse return 是其中一个错误时,例如
{"code":101,"error":"Object not found."}
Express 将其视为未捕获的异常并终止。现在我意识到这是故意的行为(有足够的信息说明为什么你不想在未捕获的异常后坚持)
Bitnami 堆栈使用 Forever 来 运行 解析服务器,但正如您从我将在下面包含的日志中看到的那样,您仍然 运行 遇到拒绝连接的问题。
2016-11-25T11:41:16+00:00 DEBUG (7): {"code":101,"error":"Object not found."}
2016-11-25T11:41:16+00:00 DEBUG (7): Failed to connect to X.X.X.X: Connection refused
2016-11-25T11:41:17+00:00 DEBUG (7): Failed to connect to X.X.X.X: Connection refused
2016-11-25T11:41:17+00:00 DEBUG (7): Failed to connect to X.X.X.X: Connection refused
2016-11-25T11:41:17+00:00 DEBUG (7): Failed to connect to X.X.X.X: Connection refused
同时在 Forever 日志中:
Error generating response. ParseError { code: 101, message: 'Object not found.' } code=101, message=Object not found.
[object Object]
/opt/bitnami/apps/parse/htdocs/node_modules/parse-server/lib/ParseServer.js:425
throw err;
^
Error: EACCES: permission denied, open '/opt/bitnami/apps/parse/htdocs/logs/parse-server.info.2016-11-25'
at Error (native)
error: Forever detected script exited with code: 7
error: Script restart attempt #1
parse-server running on port 1337
parse-dashboard running on port 4040
因此您可以看到,在 returned 解析错误之后,服务不可用,直到 Forever 可以重新启动解析服务器。
这个问题似乎也会影响所有用户,因此如果一个用户收到异常,所有用户都会在短时间内失去连接。
那么问题来了,这个应该怎么处理呢? Parse + Express 不是解决问题的方法吗?或者是否有一些方法可以将 Node 或 Express 配置为 return 请求者的 API 错误,而不会导致 Express 死亡(并且不必陷入使用 uncaughtException 使 Node 保持活动状态的陷阱)
非常感谢任何帮助,谢谢
Forever 的日志说这是 EACCES
错误,这意味着 ParseServer
无法访问日志文件并且无法在其中写入信息日志。
Error: EACCES: permission denied, open '/opt/bitnami/apps/parse/htdocs/logs/parse-server.info.2016-11-25'
at Error (native)
error: Forever detected script exited with code: 7
error: Script restart attempt #1
parse-server running on port 1337
parse-dashboard running on port 4040
我认为您必须更改 /opt/bitnami/apps/parse/htdocs/logs
并获得适当的许可,以便 ParseServer
可以在其中写入日志文件。
我已经将 Bitnami Parse 堆栈部署到 Google 云 VM。这个堆栈基本上是 Apache 运行ning 作为代理,然后是处理解析服务器和仪表板等的 MEAN 堆栈。
当访问仪表板并发送单独的 CURL 请求以测试它是否可用时,一切似乎都工作正常。
然而,这似乎有一个致命的缺陷。当 Parse return 是其中一个错误时,例如
{"code":101,"error":"Object not found."}
Express 将其视为未捕获的异常并终止。现在我意识到这是故意的行为(有足够的信息说明为什么你不想在未捕获的异常后坚持)
Bitnami 堆栈使用 Forever 来 运行 解析服务器,但正如您从我将在下面包含的日志中看到的那样,您仍然 运行 遇到拒绝连接的问题。
2016-11-25T11:41:16+00:00 DEBUG (7): {"code":101,"error":"Object not found."}
2016-11-25T11:41:16+00:00 DEBUG (7): Failed to connect to X.X.X.X: Connection refused
2016-11-25T11:41:17+00:00 DEBUG (7): Failed to connect to X.X.X.X: Connection refused
2016-11-25T11:41:17+00:00 DEBUG (7): Failed to connect to X.X.X.X: Connection refused
2016-11-25T11:41:17+00:00 DEBUG (7): Failed to connect to X.X.X.X: Connection refused
同时在 Forever 日志中:
Error generating response. ParseError { code: 101, message: 'Object not found.' } code=101, message=Object not found.
[object Object]
/opt/bitnami/apps/parse/htdocs/node_modules/parse-server/lib/ParseServer.js:425
throw err;
^
Error: EACCES: permission denied, open '/opt/bitnami/apps/parse/htdocs/logs/parse-server.info.2016-11-25'
at Error (native)
error: Forever detected script exited with code: 7
error: Script restart attempt #1
parse-server running on port 1337
parse-dashboard running on port 4040
因此您可以看到,在 returned 解析错误之后,服务不可用,直到 Forever 可以重新启动解析服务器。
这个问题似乎也会影响所有用户,因此如果一个用户收到异常,所有用户都会在短时间内失去连接。
那么问题来了,这个应该怎么处理呢? Parse + Express 不是解决问题的方法吗?或者是否有一些方法可以将 Node 或 Express 配置为 return 请求者的 API 错误,而不会导致 Express 死亡(并且不必陷入使用 uncaughtException 使 Node 保持活动状态的陷阱)
非常感谢任何帮助,谢谢
Forever 的日志说这是 EACCES
错误,这意味着 ParseServer
无法访问日志文件并且无法在其中写入信息日志。
Error: EACCES: permission denied, open '/opt/bitnami/apps/parse/htdocs/logs/parse-server.info.2016-11-25'
at Error (native)
error: Forever detected script exited with code: 7
error: Script restart attempt #1
parse-server running on port 1337
parse-dashboard running on port 4040
我认为您必须更改 /opt/bitnami/apps/parse/htdocs/logs
并获得适当的许可,以便 ParseServer
可以在其中写入日志文件。