我是Node.js的新手,但愿意尝试一下。来自PHP的东西似乎有些混乱,因为没有index.php,但是需要执行启动脚本来启动服务器npm start

在生产中该如何完成?是否有运行前脚本?如果服务器由于某种原因而关闭,该如何自动备份而不导致客户端连接问题呢?它会自动为该域工作,还是意味着有人必须访问domain.com:3000?

我在想这是错误的方式吗?

最佳答案

您要问的问题范围很广。让我给出一下它是如何工作的。


  来自PHP的东西似乎有点令人困惑,因为没有
  index.php,但需要执行开始脚本来启动
  服务器npm启动。


因此,在node.js中,我们有一个文件用于启动节点服务器,并确定所需文件。大多数人使用app.js , server.js , index.js

当您运行npm start时,这意味着您在文件已写入package.json的文件夹中将有start: node app.js。当您运行npm start时,它会着火。


  在生产中该如何完成?是否有运行前脚本?


NODE_ENV=production npm start,您可以像这样在节点代码中访问它
 process.env.NODE_ENV。这样,您可以为每个环境添加dev,qa标签。

我建议您看看

http://pm2.keymetrics.io/

What if the server closes for some reason, how do I get it back up automatically without having connection problems for the clients?


因此,您可以查看https://nodejs.org/api/cluster.html

您可以管理崩溃线程,然后打开另一个线程,因为节点是单线程。
您还可以通过此方法管理node.js的所有类型的错误。这使node.js捕获所有异常和错误
https://nodejs.org/api/process.html
处理


  这是否也意味着有人必须去domain.com:3000?


不,您可以选择任何端口。 80,8080等等。我建议在node.js应用程序之前使用nginx。但是为了减少兼容性,可以使用简单的节点应用程序。

例如:-

var http = require('http');
var port = 3000 ; // take any 80, 8080

http.createServer(function (request, response) {
    response.writeHead(200, {
        'Content-Type': 'text/plain',
        'Access-Control-Allow-Origin' : '*'
    });
    response.end('Hello World\n');
}).listen(port);


希望对您有所帮助。

10-07 19:50
查看更多