安裝節點(如果尚未安裝)
安裝iisnode(如果尚未安裝=>https://github.com/tjanczuk/iisnode)
驗證IIS已iisnode註冊爲模塊
創建一個新的應用程序池,設置爲「無託管代碼」
創建一個新的空網站
負荷iisnode樣本內容到它,更新的web.config
驗證你可以打它,它運行,可以寫它的日誌
去到IIS網站文件夾,然後運行這些npm命令
npm init/empt Ÿ
NPM安裝--save highcharts出口服務器
NPM安裝--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出口服務器使用phantomjs內部,這可以利用可用的CPU高達100%運行一些錯誤情況下離開,如果你看到這一點,你可以用它殺:
TASKKILL/IM phantomjs.exe/F
從GitHub自述'的應用程序可以被用來作爲一個CLI(命令行界面),如一個HTTP服務器,或者一個node.js模塊。你可以代理請求,或者你可以通過編程來調用它。沒有理由堅持來自cli的獨立http。 – Gntem
好吧,這聽起來像我想要的,但如何?最好是iisnode文檔有限。我想我會想要這個作爲節點模塊,對吧?應用程序URL將獲取導出圖像和處理的請求並返回圖像。 – wergeld
是的,檢查模塊文檔它有所有的細節作爲模塊使用它。你也必須在你的軟件包中進行本地安裝,而不是全局安裝。 – Gntem