关于JS报错不是一个函数怎么解决

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于JS报错不是一个函数怎么解决相关的知识,希望对你有一定的参考价值。

JS代码::!function(t,e)["object"==typeof exports&&"object"==typeof module?module.exports=e(require("echarts")):"function"==typeof define&&define.amd?define(["echarts"],e):"object"==typeof exports?exports.bmap=e(require("echarts")):(t.echarts=t.echarts||,t.echarts.bmap=e(t.echarts))](this,function(t)return function(t)function e(n)if(o[n])return o[n].exports;var r=o[n]=exports:,id:n,loaded:!1;return t[n].call(r.exports,r,r.exports,e),r.loaded=!0,r.exportsvar o=;return e.m=t,e.c=o,e.p="",e(0)([function(t,e,o)var n;n=function(t)return o(1).registerCoordinateSystem("bmap",o(2)),o(3),o(4),o(1).registerAction(type:"bmapRoam",event:"bmapRoam",update:"updateLayout",function(t,e)e.eachComponent("bmap",function(t)var e=t.getBMap(),o=e.getCenter();t.setCenterAndZoom([o.lng,o.lat],e.getZoom()))),version:"1.0.0".call(e,o,e,t),!(void 0!==n&&(t.exports=n)),function(e,o)e.exports=t,function(t,e,o)var n;n=function(t)function e(t,e)this._bmap=t,this.dimensions=["lng","lat"],this._mapOffset=[0,0],this._api=e,this._projection=new BMap.MercatorProjectionfunction n(t,e)return e=e||[0,0],a.map([0,1],function(o)var n=e[o],r=t[o]/2,i=[],a=[];return i[o]=n-r,a[o]=n+r,i[1-o]=a[1-o]=e[1-o],Math.abs(this.dataToPoint(i)[o]-this.dataToPoint(a)[o]),this)function r()function t(t)this._root=treturn t.prototype=new BMap.Overlay,t.prototype.initialize=function(t)return t.getPanes().labelPane.appendChild(this._root),this._root,t.prototype.draw=function(),tvar i=o(1),a=i.util;e.prototype.dimensions=["lng","lat"],e.prototype.setZoom=function(t)this._zoom=t,e.prototype.setCenter=function(t)this._center=this._projection.lngLatToPoint(new BMap.Point(t[0],t[1])),e.prototype.setMapOffset=function(t)this._mapOffset=t,e.prototype.getBMap=function()return this._bmap,e.prototype.dataToPoint=function(t)var e=new BMap.Point(t[0],t[1]),o=this._bmap.pointToOverlayPixel(e),n=this._mapOffset;return[o.x-n[0],o.y-n[1]],e.prototype.pointToData=function(t)var e=this._mapOffset,t=this._bmap.overlayPixelToPoint(x:t[0]+e[0],y:t[1]+e[1]);return[t.

参考技术A 这段代码是加密混淆的,看不懂的。最好是有源码进行调用调试。追问

好的

追答

javascript是解释型语言,需要在运行时才能知道效果和错误。

参考技术B

函数怎么解决

追问

什么

关于Node.js的httpClieint请求报错ECONNRESET的原因和解决措施

背景说明

最近在工作项目中有下面一个场景:

使用Node.js的express框架实现了一个文件系统服务器端,其中有个API用于客户端上传文件。客户端使用Node.js的HttpClient来调用服务器端的API上传文件。

客户端在上传小文件时没有任何问题,在上传大文件时httpClient请求报错了下面的错误,

{ [Error: socket hang up] code: ‘ECONNRESET‘ } 

google了很多资料,最后看了一下Node.js的相关源码终于知道了该问题的原因和解决办法。

问题原因

出现该问题的原因是:Node.js提供的HttpServer默认设置了超时时间为2分钟,当一个请求的处理时间超过2分钟,HttpServer会自动将该请求的socket关闭掉,于是客户端便收到了 ECONNRESET 的错误信息了。可以参考Node.js的源码

下面我们使用了一个例子来验证一下。

服务器端:

服务器端使用express框架,注册了一个路径为““ 的 GET 方法路由处理函数。在该路由处理函数中,通过setTimeout方式设置了超时处理,3分钟后超时才会对请求进行相应。

const express = require(‘express‘);
const util = require(‘util‘);
const app = express();

app.get("/", function(req, res, next) {
    util.log("Received a request.");

    setTimeout(function() {
        res.setHeader(‘transfer-encoding‘, ‘chunked‘);
        res.status(200);
        util.log("timeout")
        res.write("hello world");
        res.end();
    }, 3 * 60 * 1000)
});
var server = app.listen(3001, function() {
    sutil.log("server listening at port 3001......");
});

客户端:

客户端通过调用http.request方法请求服务器端的接口,并打印返回的信息。

const http = require(‘http‘);
const util = require(‘util‘)

var opt = {
    host: ‘localhost‘,
    port: 3001,
    method: ‘GET‘,
};
var req = http.request(opt, function(res) {
    util.log(‘STATUS:‘, res.statusCode);
    res.setEncoding(‘utf8‘);
    var resultText = ‘‘;
    res.on(‘data‘, (chunk) => {
        resultText += chunk;
    });
    res.on(‘end‘, () => {
        util.log(resultText);
    });
});

req.on(‘error‘, (e) => {
    util.log(e);
});

util.log("start request...")
req.end();

先启动服务器端,然后启动客户端。请求的结果如下所示:

服务器端:

bbash-3.2$ node app.js                                                                                                                                                           
12 Nov 21:02:16 - server listening at port 3001......                                                                                                                              
12 Nov 21:02:22 - Received a request.                                                                                                                                               
12 Nov 21:05:22 - timeout

客户端:

bash-3.2$ node app.js                                                                                                                                                               
12 Nov 21:02:22 - start request...                                                                                                                                                  
12 Nov 21:04:22 - { [Error: socket hang up] code: ECONNRESET }

通过上面的运行结果可以看到,客户端在请求等待了2分钟之后,就报错了 ECONNRESET 的错误。

解决措施

解决措施:调用服务器端的server.setTimeout()方法将服务器端的超时设置得大一点或者直接将超时机制关闭(将超时时间设置为0即可关闭)

就使用上面的代码,客户端不变,服务器在文件最后调用server.setTimeout()方法,如下所示,

var server = app.listen(3001, function() {
    sutil.log("server listening at port 3001......");
});
server.setTimeout(0)

先启动服务器端,然后再启动客户端,运行结果如下:

服务器端:

bash-3.2$ node app.js    
12 Nov 21:37:22 - server listening at port 3001......                                    
12 Nov 21:37:29 - Received a request.                                                    
12 Nov 21:40:29 - timeout

客户端:

bash-3.2$ node app.js         
12 Nov 21:37:29 - start request...                                                       
12 Nov 21:40:29 - STATUS: 200                                                            
12 Nov 21:40:29 - hello world 

从上面运行结果可见,客户端能够正常接收到服务器端的返回结果了。

(done)

以上是关于关于JS报错不是一个函数怎么解决的主要内容,如果未能解决你的问题,请参考以下文章

关于jquery.pagination.js分页的问题,老报错是怎么回事

关于Ueditor最新版本中(1.2.4.0)中editor_all.js报错,总数有一个红色的叉叉,但是里面只是感叹号的警告

关于Node.js的httpClieint请求报错ECONNRESET的原因和解决措施

关于Eclipse项目中加入jquery-1.x.js文件报错问题

关于tomcat对编码不正确的url参数报错的解决

关于npm run build 报错解决方案