gpt4 book ai didi

node.js - 在 iisnode 下运行 Highcharts 导出服务器时出现问题

转载 作者:太空宇宙 更新时间:2023-11-04 02:08:07 27 4
gpt4 key购买 nike

我正在尝试使用 iisnode ( https://github.com/tjanczuk/iisnode ) 在 node.js 下设置 Highcharts 导出服务器。它基本上充当从 IIS 到 Node 的请求之间的管道。伟大的!只是,如何“安装”highcharts 导出服务器以便它使用 iisnode?我按照说明安装了 highcharts-export Node 模块,但它安装在 (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 中存在的 Node 应用程序并让它在 issnode 中工作。”我不一定需要每一步都握着我的手。我只是没有看到任何可以遵循的步骤列表。

最佳答案

安装 Node (如果尚未安装)
安装iisnode(如果尚未安装=>https://github.com/tjanczuk/iisnode)
验证 IIS 是否已将 iisnode 注册为模块
创建一个新的应用程序池,设置为“无托管代码”
创建一个新的空网站
将iisnode示例内容加载到其中,更新web.config
验证您可以点击它并且它运行并且可以写入它的日志
转到 IIS 网站文件夹并运行这些 npm 命令
npm init/空
npm install --save highcharts-export-server
npm install --save tmp

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

<小时/>
var fs = require('fs');
var http = require('http');
var path = require("path");
var tmp = require('tmp');

const exporter = require('highcharts-export-server');

http.createServer(function (req, res) {
try {

if (req.method !== 'POST') { throw "POST Only"; }
var body = '';

req.on('data', function (data) {
body += data;
});
req.on('end', function () {
if (body === '') { throw "Empty body"; }

var tempFile = tmp.fileSync({discardDescriptor: true, postfix: ".svg", dir: process.cwd()});

var input = JSON.parse(body);
input.outfile = path.basename(tempFile.name);

exporter.initPool();
exporter.export(input, function (err, exres) {
if (err) { throw "Export failed"; }

var filename = path.join(process.cwd(), exres.filename);

exporter.killPool();

fs.readFile(filename, function(err, file) {
res.writeHead(200, { 'Content-Type': 'image/svg+xml', 'Content-disposition': 'attachment; filename=' + exres.filename });
res.write(file.toString());
res.end();
tempFile.removeCallback();
});
});

});

} catch (err) {
console.log({port: process.env.PORT, error: err});
res.writeHead(409, { 'Content-Type': 'text/html' });
res.end(err.message);
}
}).listen(process.env.PORT);

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

highcharts-export-server 在内部使用 phantomjs,这可能会在某些错误情况下运行,占用 100% 的可用 CPU,如果您看到这种情况,您可以使用以下命令杀死它:
Taskkill/IM phantomjs.exe/F

关于node.js - 在 iisnode 下运行 Highcharts 导出服务器时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43413867/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com