Node.js 获取在iisnode下运行的Highcharts导出服务器的问题

Node.js 获取在iisnode下运行的Highcharts导出服务器的问题,node.js,highcharts,iisnode,Node.js,Highcharts,Iisnode,我正在尝试使用iisnode()在node.js下设置Highcharts导出服务器。它基本上充当从IIS到节点的请求之间的管道。伟大的只是,如何“安装”highcharts导出服务器,使其使用iisnode?我按照说明安装了highcharts导出节点模块,但它安装在(Windows)AppData\Roaming\npm下。如何将iisnode移动或指向导出服务器? 从npm安装后,此导出服务器将通过以下方式运行: highcharts-export-server --enableServe

我正在尝试使用iisnode()在node.js下设置Highcharts导出服务器。它基本上充当从IIS到节点的请求之间的管道。伟大的只是,如何“安装”highcharts导出服务器,使其使用iisnode?我按照说明安装了highcharts导出节点模块,但它安装在(Windows)AppData\Roaming\npm下。如何将iisnode移动或指向导出服务器? 从npm安装后,此导出服务器将通过以下方式运行:

highcharts-export-server --enableServer 1
所以,要在IIS8+iisnode中安装和使用它 1) 本地安装导出服务器的正确目录是什么(在Windows上,通过npm拉入的模块转到C:\Users\\AppData\Roaming\nmp\使用npm安装包的登录用户在哪里)? 2) 这需要什么样的iisnode配置

我有iisnode设置,并在我们的开发盒上运行,所有的示例都可以工作。我的困惑部分在于issnode完全缺乏文档。我找到的所有链接都只是重复了issnode开发者链接中列出的项目,没有实际的“这里是如何获取npm中存在的节点应用程序并使其在issnode中工作的。”我不一定需要在每一步都用手握住。我只是没有看到要遵循的步骤列表。

安装节点(如果尚未安装)
安装iisnode(如果尚未安装=>)
验证IIS是否已将iisnode注册为模块
创建新的应用程序池,设置为“无托管代码”
创建一个新的空网站
将iisnode示例内容加载到其中,更新web.config
验证您是否可以点击它并运行它,以及是否可以写入它的日志
转到IIS网站文件夹并运行这些npm命令
npm初始化/空
npm安装--保存highcharts导出服务器
npm安装--保存tmp

添加文件hcexport.js并重新配置web.config


根据需要扩展以支持您计划使用的导出类型。

highcharts导出服务器在内部使用phantomjs,在某些错误情况下,这可能会占用100%的可用CPU,如果您看到这一点,可以使用:
Taskkill/IM phantomjs.exe/F

安装节点(如果尚未安装)
安装iisnode(如果尚未安装=>)
验证IIS是否已将iisnode注册为模块
创建新的应用程序池,设置为“无托管代码”
创建一个新的空网站
将iisnode示例内容加载到其中,更新web.config
验证您是否可以点击它并运行它,以及是否可以写入它的日志
转到IIS网站文件夹并运行这些npm命令
npm初始化/空
npm安装--保存highcharts导出服务器
npm安装--保存tmp

添加文件hcexport.js并重新配置web.config


根据需要扩展以支持您计划使用的导出类型。

highcharts导出服务器在内部使用phantomjs,在某些错误情况下,这可能会占用100%的可用CPU,如果您看到这一点,可以使用:

Taskkill/IM phantomjs.exe/F

来自saukender的解决方案似乎有效,但似乎每次都会初始化一个新的幻影工作者池

如果已经设置了node和issnode,另一种解决方案是直接启动highcharts导出服务器,而不是手动调用导出功能。这似乎提供了更好的性能,因为它不会在每个请求上初始化工作池

// app.js
const highcharts = require("highcharts-export-server");

highcharts.initPool();
highcharts.startServer(process.env.PORT || 8012);
别忘了将web.config指向
app.js

我发现这两个资源在安装过程中非常有用:


    • 来自saukender的解决方案似乎有效,但似乎每次都会初始化一个新的幻影工作者池

      如果已经设置了node和issnode,另一种解决方案是直接启动highcharts导出服务器,而不是手动调用导出功能。这似乎提供了更好的性能,因为它不会在每个请求上初始化工作池

      // app.js
      const highcharts = require("highcharts-export-server");
      
      highcharts.initPool();
      highcharts.startServer(process.env.PORT || 8012);
      
      别忘了将web.config指向
      app.js

      我发现这两个资源在安装过程中非常有用:


      从GitHub自述文件
      该应用程序可以用作CLI(命令行界面)、HTTP服务器或node.js模块。
      您可以代理对它的请求,也可以通过编程方式调用它。没有理由坚持使用cli中的独立http。好吧,这听起来像是我想要的,但如何实现呢?iisnode文档充其量是有限的。我想我会把它作为一个节点模块,对吗?应用程序URL将接收导出图像的请求并处理并返回图像。是的,请检查模块文档,它具有将其用作模块的所有详细信息。您还必须在包中本地安装,而不是全局安装。从GitHub自述
      中,该应用程序可以用作CLI(命令行界面)、HTTP服务器或node.js模块。
      您可以代理对它的请求,也可以通过编程方式调用它。没有理由坚持使用cli中的独立http。好吧,这听起来像是我想要的,但如何实现呢?iisnode文档充其量是有限的。我想我会把它作为一个节点模块,对吗?应用程序URL将接收导出图像的请求并处理并返回图像。是的,请检查模块文档,它具有将其用作模块的所有详细信息。此外,您还必须在包中本地安装,而不是全局安装。这是可行的。请记住,您必须将类型设置为
      type:svg
      ,否则您将遇到一个类型错误。请记住,必须将类型设置为
      type:svg
      ,否则会遇到类型错误。