我有一个使用NodeJS + Express + GraphQL + MongoDB后端和ReactJS + Apollo前端开发的Web应用程序。我想在本地 部署此应用程序。那有可能吗?
我遇到了数十种“如何部署到Heroku”,“如何部署到Digital Ocean”,“如何部署到Github”等等,但是没有一个解释如何在本地部署。
现在,我运行:nodemon server
用于后端,npm start
用于前端。我看到该应用程序在http://localhost:3000/
上运行(我使用cors将前端连接到在端口3001上运行的服务器)。
我只想转到http://localhost:3000/
并查看应用程序,而不必执行命令npm start
和nodemon server
。这可能吗?如果是这样,我该怎么做?
据我所知,我们的本地服务器不是WAMP服务器(尽管我们的操作系统是Windows)。 IT部门告诉我这是一个
[...]普通的常规旧服务器。该地址是localhost在 端口3000。如果需要,您可以在3001上打开另一个端口。只是 将您的东西放到C:驱动器上,您应该会很好。我有 从未听说过Node或React,所以如果您有任何疑问,我将无济于事。
有什么想法吗?在此先感谢您的帮助!
更新
我要寻找的东西似乎有些混乱。我正在尝试在本地部署它。
比方说,在您的本地计算机上(您在家中的笔记本电脑上),您在喜欢的浏览器上访问了localhost:3000。除非在那一刻不向localhost提供服务,否则它将显示“拒绝连接”或其他内容。我想要的是每当我访问localhost:3000时,我就能打开网络上的任何计算机,并且我的反应站点出现并起作用...是否更有意义?
我不希望这是开发模式。我想要在localhost上构建此项目...我开始认为这是不可能的。
答案 0 :(得分:5)
据我了解,您希望将其部署在开发设备上的本地服务器上,而不是本地上。
我考虑过这样做...但是我不确定它始终运行会不会好起来...:(
如果服务器未运行,如何使用它?就像WAMP(运行apache)一样,或者无论您在那里滚动,它都必须正在运行。因此,只需像建议slawomir那样使其成为后台进程即可。
PS我认为您虽然不能正确理解节点服务器。 阅读this以了解为什么需要重新加载节点服务器。之后,您需要了解没有哪种热重装工具是完美的,并且您将需要不时地重新启动服务器。
PPS我不知道这意味着什么
[...]普通的常规旧服务器。该地址是在端口3000上运行的localhost。
如果有一台运行在3000上的服务器,则需要将服务器的端口更改为其他(最常见的是9000)
答案 1 :(得分:4)
要解决该问题,您可以创建一个启动脚本,该脚本执行npm start
和nodemon server
。然后确保将其隐藏,以便您的服务器将始终运行。不过请记住,抛出的任何错误都会使您的服务器停止运行,除非您对其进行配置,否则服务器不会自行重新加载。
答案 2 :(得分:0)
要解决该问题,首先需要创建一个扩展名为.bat or .cmd
的批处理文件,并在该文件下添加以下2条命令
nodemon server
npm start
然后按照以下步骤将其添加为Windows操作系统的启动脚本。
例如,上述步骤是创建一个批处理文件并将其添加为Windows 8和10用户的启动脚本。 为了更好的说明或参考,请点击以下链接。reference-link
答案 3 :(得分:0)
在保持服务器运行的同时,无法选择重新加载服务器。从技术上讲,您可以让您的“主”文件监视另一个文件的更改。这将是您实际上保留服务器程序的文件。然后,在更改时,您将放弃当前的逻辑并开始执行。也就是说,以这种方式进行操作将非常脆弱,而且是一种非常绕行的方式。它也无法修复您需要类似解决方案的前端。
相反,您可以加入您喜欢的编辑器的save事件,并运行这两个控制台命令,以便每次保存时,服务器都会自动启动。 (确保还清理现有服务器)
答案 4 :(得分:0)
我会尝试以下操作:
答案 5 :(得分:0)
也许您正在寻找类似ngrok的东西,它创建了一个通往您的本地主机的袜子隧道,据我所知,它是从本地主机有效部署的,它允许您通过{{1} },甚至是自定义子域(如果您要支付订阅费的话)。
如果我错了,请告诉我!
答案 6 :(得分:0)
我知道这个帖子已经两年了。但是,我认为您第二个期望结果的解决方案是使用并发。 https://www.npmjs.com/package/concurrently。 这将使您可以执行一个NPM START来启动全部三个过程中的两个。
关于第一个问题,我认为解决方案是将Electron添加到您的应用程序中,以便您可以将其打包到可执行应用程序中。启动应用程序时,您的Express服务器将在后台开始运行。
大多数人可能不理解为什么需要这样做。在本地服务器(计算机)上运行允许访问本地文件系统,甚至可以在代理内部运行SQL查询,如果托管在外部服务器上,则需要IT参与。
答案 7 :(得分:0)
据我所知,您希望将应用部署在本地服务器上,这意味着您希望将其部署在您所连接的网络上。
从命令提示符检查ip 要在本地部署它, 运行:HOST=ip npm run start
它将部署在您的本地服务器上。并且连接到服务器的每个人都可以访问该url
如果这对你有用,请点赞
答案 8 :(得分:-2)
您需要执行npm start
,可能有其他启动方法,但是所有方法都相同。您可以在Freecodecamp上阅读有关在DigitalOcean上进行部署的文章。您可以将其操作到本地主机。应该没什么不同。FCC Tut on Deploying