首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在云中运行云端并将它的返回传递给JS

在云中运行云端并将它的返回传递给JS
EN

Stack Overflow用户
提问于 2018-11-12 20:03:45
回答 1查看 357关注 0票数 0

我在Heroku上写了一个木偶戏剧本。我已经整理好了构建包,而且运行良好。最后,我打算将它移到我自己的服务器上,并在5分钟的循环中运行它。我的问题是它遇到了一个超时( Heroku上的H12,发送任何数据回服务器需要超过30万毫秒)。现在,我决定尝试在后端运行木偶师,然后返回一个JSON,该JSON被传递给前端JS,并用于塑造最终的网页。

我的问题是这个。我不能在前端JS中使用require语句,因为它是对节点的警告,而不是对"web“JS的警告。我不能在上面使用Browserify,因为Browserify自然不支持木偶师,而且我不能在Express路由文件中包括木偶师,因为这会将木偶脚本放在前端,正如前面所述,这会导致超时,并且不允许我改变html的外观。

基本所需的功能结构:

代码语言:javascript
复制
Call made to localhost:PORT/puppet
Puppet script invoked
Puppet script checks if pages are up/scrapes data/does automated testing etc
Script returns a JSON which is then saved to a variable
Express serves HTML file with script and css
Script uses returned JSON to dictate page structure/style/classes

档案结构:

代码语言:javascript
复制
puppet.js (puppeteer script)
server.js (handles routes and express)
index.html (served by server.js)
master.css
package.json
package-lock.json

节点模块:

代码语言:javascript
复制
colors
express
puppeteer

我在这个问题上花了4-5天的时间,所有的帮助都非常感谢。

编辑:为了澄清,我需要一种方法从服务器端傀儡脚本传递一个JSON到javascript,由Express提供的html使用,这样我就可以使用JSON中的值来更改网页。也就是说,如果JSON是(a: true,b: false),那么我将给div#a类.success和div#b类.warn

编辑2:新问题,不能使用获取本地主机。已经设置了一个api,但无法从中获取。每一个解决方案似乎都有一个新的问题。

EN

回答 1

Stack Overflow用户

发布于 2018-11-14 23:31:52

好吧,您不能增加Heroku的超时时间,所以如果您真的想从请求中触发木偶脚本,您需要这样做:

  1. 发送200状态
  2. 启动木偶戏剧本
  3. 将.JSON结果保存为DB (因为再也不能使用res.send()了)
  4. 从前端的DB中获取结果(因此,可以每隔X秒查询一次,以查看结果是否在。)
  5. 获取所需的HTML,CSS等,现在您不必等待木偶脚本结束。

这并不特别优雅,但超过30秒的请求是一个特例。

您可以在步骤1发送ID和200状态代码,然后您可以使用它在步骤4查询DB。

另外,您可能知道这一点,但是您可以使用类似heroku调度程序或npm包节点调度的方法使您的傀儡脚本每隔X分钟运行一次,但这也意味着将结果保存到DB中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53269306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档