我在Heroku上写了一个木偶戏剧本。我已经整理好了构建包,而且运行良好。最后,我打算将它移到我自己的服务器上,并在5分钟的循环中运行它。我的问题是它遇到了一个超时( Heroku上的H12,发送任何数据回服务器需要超过30万毫秒)。现在,我决定尝试在后端运行木偶师,然后返回一个JSON,该JSON被传递给前端JS,并用于塑造最终的网页。
我的问题是这个。我不能在前端JS中使用require语句,因为它是对节点的警告,而不是对"web“JS的警告。我不能在上面使用Browserify,因为Browserify自然不支持木偶师,而且我不能在Express路由文件中包括木偶师,因为这会将木偶脚本放在前端,正如前面所述,这会导致超时,并且不允许我改变html的外观。
基本所需的功能结构:
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档案结构:
puppet.js (puppeteer script)
server.js (handles routes and express)
index.html (served by server.js)
master.css
package.json
package-lock.json节点模块:
colors
express
puppeteer我在这个问题上花了4-5天的时间,所有的帮助都非常感谢。
编辑:为了澄清,我需要一种方法从服务器端傀儡脚本传递一个JSON到javascript,由Express提供的html使用,这样我就可以使用JSON中的值来更改网页。也就是说,如果JSON是(a: true,b: false),那么我将给div#a类.success和div#b类.warn
编辑2:新问题,不能使用获取本地主机。已经设置了一个api,但无法从中获取。每一个解决方案似乎都有一个新的问题。
发布于 2018-11-14 23:31:52
好吧,您不能增加Heroku的超时时间,所以如果您真的想从请求中触发木偶脚本,您需要这样做:
这并不特别优雅,但超过30秒的请求是一个特例。
您可以在步骤1发送ID和200状态代码,然后您可以使用它在步骤4查询DB。
另外,您可能知道这一点,但是您可以使用类似heroku调度程序或npm包节点调度的方法使您的傀儡脚本每隔X分钟运行一次,但这也意味着将结果保存到DB中。
https://stackoverflow.com/questions/53269306
复制相似问题