我正在设置一个node.js服务器,它使用任意图表呈现静态jpg/png图像。
我可以返回示例中的简单示例饼图,但是当我试图返回AnyStock的示例时,会得到一些奇怪的结果。
代码应该在url:xx.xxx.xxx.xx:3000/insert上创建并返回股票图表。相反,代码返回此图表时没有任何图表或烛台:

当我在一个普通的html站点上设置相同的图形时,我会得到以下结果:

node.js代码:
var fs = require('fs');
var express = require('express');
var app = express();
var path = require('path');
var router = express.Router();
app.get('/', function(req, res) {
var query = require('url').parse(req.url, true).query;
var stock_id = query.stock_id;
var type = query.type;
if (type == "insert") {
var JSDOM = require('jsdom').JSDOM;
var jsdom = new JSDOM('<head><script src="https://cdn.anychart.com/releases/8.9.0/js/anychart-core.min.js" type="text/javascript"></script><script src="https://cdn.anychart.com/releases/8.9.0/js/anychart-stock.min.js" type="text/javascript"></script></head><body><div id="container" style="width: 500px; height: 400px;"></div></body>', {
runScripts: 'dangerously'
});
var window = jsdom.window;
var anychart = require('anychart')(window);
var anychartExport = require('anychart-nodejs')(anychart);
var table, mapping, chart;
table = anychart.data.table();
table.addData([
['2015-12-24', 511.53, 514.98, 505.79, 506.40],
['2015-12-25', 512.53, 514.88, 505.69, 507.34],
['2015-12-26', 511.83, 514.98, 505.59, 506.23],
['2015-12-27', 511.22, 515.30, 505.49, 506.47],
['2015-12-28', 510.35, 515.72, 505.23, 505.80],
['2015-12-29', 510.53, 515.86, 505.38, 508.25],
['2015-12-30', 511.43, 515.98, 505.66, 507.45],
['2015-12-31', 511.50, 515.33, 505.99, 507.98],
['2016-01-01', 511.32, 514.29, 505.99, 506.37],
['2016-01-02', 511.70, 514.87, 506.18, 506.75],
['2016-01-03', 512.30, 514.78, 505.87, 508.67],
['2016-01-04', 512.50, 514.77, 505.83, 508.35],
['2016-01-05', 511.53, 516.18, 505.91, 509.42],
['2016-01-06', 511.13, 516.01, 506.00, 509.26],
['2016-01-07', 510.93, 516.07, 506.00, 510.99],
['2016-01-08', 510.88, 515.93, 505.22, 509.95],
['2016-01-09', 509.12, 515.97, 505.15, 510.12],
['2016-01-10', 508.53, 516.13, 505.66, 510.42],
['2016-01-11', 508.90, 516.24, 505.73, 510.40]
]);
mapping = table.mapAs();
mapping.addField('open', 1, 'first');
mapping.addField('high', 2, 'max');
mapping.addField('low', 3, 'min');
mapping.addField('close', 4, 'last');
mapping.addField('value', 4, 'last');
chart = anychart.stock();
chart.plot(0).ohlc(mapping).name('ACME Corp.');
chart.title('AnyStock Basic Sample');
chart.container('container');
chart.draw();
anychartExport.exportTo(chart, 'jpg').then(function(image) {
fs.writeFile('anychart.jpg', image, function(fsWriteError) {
if (fsWriteError) {
console.log(fsWriteError);
} else {
res.sendFile(path.join(__dirname + '/anychart.jpg'));
}
});
}, function(generationError) {
console.log(generationError);
});
} else if (type == "image") {
res.sendFile(path.join(__dirname + '/anychart.jpg'));
}
});
app.listen(3000);我怀疑我在jsdom中包含JS文件的方式有问题。如果我将jsdom中的两个文件排除在外,就会得到相同的结果。
如果你有什么建议,请告诉我。
发布于 2021-05-19 12:58:52
因此,在等待了几天之后,AnyChart支持返回给我,并给出了上述问题的以下答案:
我们不能保证这个模块能像预期的那样工作。它依赖于在不同操作系统中无法提供稳定版本的许多其他库。
相反,他们建议使用他们的导出服务器解决方案,这与我所寻找的不同。
我们的设置是建立在一个灯服务器上的,所以我们不想一天只运行几张图片就运行另一台服务器。
如果您有一个解决方案的建议,我可以将我的AnyStock图表导出到JPG,PNG或GIF,请告诉我。
谢谢:-)
发布于 2021-05-17 10:05:24
请您检查并共享浏览器控制台消息吗?这往往是故障排除的第一步:)
https://stackoverflow.com/questions/67567413
复制相似问题