Anystock 不适用于 Anychart-NodeJS
Anystock not working with Anychart-NodeJS
我正在设置一个 node.js 服务器,它使用 Anychart 呈现静态 jpg/png 图像。
我可以 return 示例中的简单示例饼图,但是当我尝试 return AnyStock 的示例时,我得到了一些奇怪的结果。
代码应在 url 上创建并 return 股票图表:xx.xxx.xxx.xx:3000/insert
。
相反,代码 returns 此图表没有任何图表或烛台:
当我在普通 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 中排除这两个文件,我会得到相同的结果..
如果您有任何建议,请告诉我。
能否请您检查并分享浏览器控制台消息?这往往是第一个故障排除步骤:)
因此,经过几天的等待,AnyChart 支持返回给我,并针对我的上述问题给出了以下答案:
we can't guarantee that this module will work as expected. It depends
on many other libraries that can't provide stable versions in
different OS.
相反,他们建议使用他们的 Export Server 解决方案,这与我正在寻找的解决方案不同。
我们的设置是建立在 LAMP 服务器上的,所以我们不想 运行 另一台服务器只是为了一天的几张图片。
如果你们对我可以将我的 AnyStock 图表导出为 JPG、PNG 或 GIF 的解决方案有任何建议,请告诉我。
谢谢 :-)
我正在设置一个 node.js 服务器,它使用 Anychart 呈现静态 jpg/png 图像。
我可以 return 示例中的简单示例饼图,但是当我尝试 return AnyStock 的示例时,我得到了一些奇怪的结果。
代码应在 url 上创建并 return 股票图表:xx.xxx.xxx.xx:3000/insert
。
相反,代码 returns 此图表没有任何图表或烛台:
当我在普通 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 中排除这两个文件,我会得到相同的结果..
如果您有任何建议,请告诉我。
能否请您检查并分享浏览器控制台消息?这往往是第一个故障排除步骤:)
因此,经过几天的等待,AnyChart 支持返回给我,并针对我的上述问题给出了以下答案:
we can't guarantee that this module will work as expected. It depends on many other libraries that can't provide stable versions in different OS.
相反,他们建议使用他们的 Export Server 解决方案,这与我正在寻找的解决方案不同。
我们的设置是建立在 LAMP 服务器上的,所以我们不想 运行 另一台服务器只是为了一天的几张图片。
如果你们对我可以将我的 AnyStock 图表导出为 JPG、PNG 或 GIF 的解决方案有任何建议,请告诉我。
谢谢 :-)