Node.js Nodejs在“新建”时失败<;某物>;`宣言?
我有一个js函数在客户端运行时非常完美:Node.js Nodejs在“新建”时失败<;某物>;`宣言?,node.js,jsdom,Node.js,Jsdom,我有一个js函数在客户端运行时非常完美: // [...] (some meta lines here) var converterEngine = function (input) { // BLOB => Binary => Base64 var uInt8Array = new Uint8Array(input), i = uInt8Array.length; var biStr = []; //new Array(i); while
// [...] (some meta lines here)
var converterEngine = function (input) { // BLOB => Binary => Base64
var uInt8Array = new Uint8Array(input),
i = uInt8Array.length;
var biStr = []; //new Array(i);
while (i--) { biStr[i] = String.fromCharCode(uInt8Array[i]); }
var base64 = window.btoa(biStr.join(''));
return base64;
};
// less important but complementary
var getImageBase64 = function (url, callback) {
// to comment better
var xhr = new XMLHttpRequest(url), img64;
xhr.open('GET', url, true); // url is the url of a PNG/JPG image.
xhr.responseType = 'arraybuffer';
xhr.callback = callback;
xhr.onload = function(){
img64 = converterEngine(this.response); // convert BLOB to base64
this.callback(null,img64); // callback : err, data
};
xhr.onerror = function(){ callback('B64 ERROR', null); };
xhr.send();
};
在nodejs端,通过节点myscript.js
加载和使用代码,例如:
var jsdom = require('jsdom');
var fs = require('fs');
jsdom.env(
"<html><body></body></html>", // CREATE DOM HOOK:
[ '../js/b64.js' ], // ... & offline
function (err, window) {
window.getImageBase64("http://bip.bop/img.png", function(err,data){
//doing more funny stuff here
})
}
);
在nodejs中使用
new
有任何限制吗?如何使它同时在客户端和服务器端工作?Uint8Array
应该可以正常工作,不会出现类型错误。您使用的是哪个Node.js版本?Node-v:v0.10.33
。我的客户端测试是使用Chromium版本39.0.2171.65 Ubuntu 14.04(64位),这意味着V8 js引擎。这似乎是一个棘手的问题。你对变矩器发动机做过测试吗?检查该函数是否独立工作可能是个好主意。完全相同的函数在Google Chrome中工作良好。那么,在Node上单独测试它怎么样?
file:///data/yug/projects_active/make-modules/js/b64.js:9
var uInt8Array = new Uint8Array(input),
^
TypeError: Type error
at converterEngine (file:///data/yug/projects_active/make-modules/js/b64.js:9:22)
at xhr.onload (file:///data/yug/projects_active/make-modules/js/b64.js:24:17)
at dispatchEvent (/data/yug/projects_active/make-modules/node_modules/jsdom/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:570:25)
at setState (/data/yug/projects_active/make-modules/node_modules/jsdom/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:593:14)
at IncomingMessage.<anonymous> (/data/yug/projects_active/make-modules/node_modules/jsdom/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:427:13)
at IncomingMessage.emit (events.js:117:20)
at _stream_readable.js:943:16
at process._tickCallback (node.js:419:13)