如何解决Anystock 不适用于 Anychart-NodeJS
我正在设置一个 node.js 服务器,它使用 Anychart 呈现静态 jpg/png 图像。
我可以返回示例中的简单示例饼图,但是当我尝试返回 AnyStock 的示例时,我得到了一些奇怪的结果。
该代码应在以下网址上创建并返回股票图表: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,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,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',516.18,505.91,509.42],['2016-01-06',511.13,516.01,506.00,509.26],['2016-01-07',510.93,516.07,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,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','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 中排除这两个文件,我会得到相同的结果..
如果您有任何建议,请告诉我。
解决方法
您能检查并分享浏览器控制台消息吗?这往往是第一个故障排除步骤 :)
,因此,经过几天的等待时间,AnyChart 支持人员回复了我对上述问题的以下答复:
我们无法保证此模块会按预期工作。这取决于 在许多其他无法提供稳定版本的库中 不同的操作系统。
相反,他们建议使用与我所寻找的不同的 Export Server 解决方案。
我们的设置是建立在 LAMP 服务器上的,所以我们不想为了每天只为几张图片而运行另一台服务器。
如果你们中的任何人对我可以将 AnyStock 图表导出为 JPG、PNG 或 GIF 的解决方案有任何建议,请告诉我。
谢谢:-)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。