JS的: Cannot read property 'value' of undefined

部分html代码

 <!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>随机数据生成</title>
    <link rel="stylesheet" type="text/css" href="css/index.css">
  <script type="text/javascript" src="js/index.js"></script>
</head>
<body>

<textarea rows="1" cols="1"  name="date" class="texta" value=""></textarea>

<script type="text/javascript">
var texta = document.getElementsByTagName("textarea")[0];

start.onclick = function(){
  IntegerDate(peoVal,exceVal,qualVal,unqualVal,texta);
}

外部JS代码

 function IntegerDate(sNum,exce,good,qual,unqual,elements){//注释:总人数,优秀,良好,合格,不合格,要添加的元素
        for(var i = 0;i < sNum;i++){
            if(exce){
                elements.getAttribute("value")  += randomInt(4800,5040) + '\n';
            }
            if(good){
                elements.getAttribute("value") += randomInt(4300,4550) + '\n';
            }
            if(qual){
                elements.getAttribute("value") += randomInt(3100,4180) + '\n';
            }
            if(unqual){
                elements.getAttribute("value") += randomInt(2300,2940) + '\n';
            }
        }
}

错误图片提示

图片说明

6个回答

错误源代码链接:https://pan.baidu.com/s/1jIu1i2y

忘了说明一件事:被调用的函数是在start.onclick事件中的

你调用这个的地方,代码贴出来看看

function IntegerDate(sNum,exce,good,qual,unqual,elements){这里定义了6个参数

start.onclick = function(){
  IntegerDate(peoVal,exceVal,qualVal,unqualVal,texta);//这里只传了5个参数
}

js调用函数,参数是按顺序接收的!函数有6个参数,调用传了5个,默认对应的是前5个,最后elements应该是undefined

1、你贴的代码跟截图上面的不一样
2、function IntegerDate(sNum,exce,good,qual,unqual,elements){这里定义了6个参数

start.onclick = function(){
IntegerDate(peoVal,exceVal,qualVal,unqualVal,texta);//这里只传了5个参数
}
这个也是有问题的

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
js出现Cannot read property 'length' of undefined
js代码: ``` $(document).ready(function(){ var url = "teachers/getSchoolList.do"; $.ajax({ type: "POST", url: url, //async : false, dataType:"text", success : function(data) { alert(data); alert("8888"); var str="<dl>"; console.log(data); $.each(data.list,function (i, value) { str=str+"<dd data-name='"+value[i].SCHOOLNAME+"'>"+value[i].SCHOOLNAME+"</dd>"; }); str = str+"</dl>"; $(".erjimenu").html(str); }, error:function(data){ console.log(data); $("#form-notice").html('获取学校出错,请重新获取'); } }); }) 后台代码: @RequestMapping(value="/getSchoolList") public Object getSchoolList()throws Exception{ ModelAndView mv = this.getModelAndView(); PageData pd = new PageData(); pd = this.getPageData(); Map<String, Object> map = new HashMap<String, Object>(); List<PageData> schoolList = this.schoolService.listAll(new PageData()); map.put("list", schoolList); return AppUtil.returnObject(pd, map); } ```
微信小程序报错:thirdScriptError 求解决方案。
#错误提示:thirdScriptError: Cannot read property 'songlist' of undefined;at api request success callback function TypeError: Cannot read property 'songlist' of undefined #源代码: ``` // pages/list/list.js var config = require('../../config.js'); var formatSeconds = function(value) { var time = parseFloat(value); var m = Math.floor(time / 60); var s = time - m * 60; return [m, s].map(formatNumber).join(':'); function FormatNumber(n) { n = n.toString() return n[1] ? n : '0' + n } } Page({ data: { board: '', songlist: [], loading: false, }, onLoad: function(options) { var self = this; var topid = options.type; this.setData({ loading: true }) wx: wx.request({ url: config.config.hotUrl, data: { topid: topid }, success: function(e) { if (e.statusCode == 200) { var songlist = e.data.showapi_res_body_pagebean.songlist; for (var i = 0; i < songlist.length; i++) { songlist[i].seconds = formatSeconds(songlist[i].seconds); } self.setData({ board: e.data.showapi_res_body_pagebean.songlist[0].albumpic_big, songlist: songlist, loading: false }); wx.setStorageSync('songlist', songlist); } } }); } }) ```
easyui treegrid 获取父节点,运行到js报错?代码下
<th data-options="field:'parentSubjectName',width:100,editor:'text',formatter:function(value,row,index){ console.log(row.parentSubjectCode); var lv = $('#tg').treegrid('getParent', row.parentSubjectCode); console.log(lv); }">上级科目</th 报错: VM494 jquery.easyui.min.js:2157 Uncaught TypeError: Cannot read property 'data' of undefined(…) 这个js怎么报错呢?![图片说明](https://img-ask.csdn.net/upload/201612/14/1481678059_233386.png) 怎么回事呢,来大神帮忙啊
JS split报错问题,使用了Echart
{ title: '天数', field: 'ChiD', width: 120, formatter: function (value, row, index) { var CD1 = ""; CD1 = value; var CMingX = []; CMingX = CD1.split(","); value = ""; for(var c=0;c<CMingX.length-1;c++) { value += CMingX[c] + "\n"; } return value; } value =" 总计:8 天,2015-07-01,2015-07-02,2015-07-03,2015-07-06,2015-07-07,2015-07-08,2015-07-09,2015-07-10," 目的 = 总计:8 天 2015-07-01 2015-07-02 2015-07-03 2015-07-06 2015-07-07 2015-07-08 2015-07-09 2015-07-10 现在报错:Uncaught TypeError: Cannot read property 'split' of undefined
Vue的报错,一个仿造百度的下拉菜单
``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>下拉菜单</title> <script src='http://cdn.jsdelivr.net/vue/1.0.7/vue.min.js'></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/vue-resource/1.0.3/vue-resource.js"></script> <style type="text/css"> .gray { background-color: #ccc; color: gold; } </style> </head> <body> <div id="box"> <input type="text" @keyup='get()' v-model='t1' /> <ul > <li v-for='value in myData'>{{value}}</li> </ul> <p v-show='myData.length === 0'>暂无数据。。。</p> </div> <!--https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=a&json=1&p=3&sid=&req=2&csor=1&cb=jQuery1102005335343900131995_1480232231511&_=1480232231514--> <script> new Vue({ el:'body', data:{ myData:[], t1:'' }, methods:{ get:function(){ this.$http.jsonp('https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su' , { wd:this.t1, },{ json:'cb' }).then(function(res){ this.myData = res.data.s; } , function(res){ console.log(res.status); }); } } }); </script> </body> </html> ``` 错误是这样的: su?callback=_jsonpx6o0z3kbkvsubwkyvd0lik9:1 Uncaught TypeError: Cannot read property 'sug' of undefined(anonymous function) @ su?callback=_jsonpx6o0z3kbkvsubwkyvd0lik9:1 vue-resource.js:1276 Uncaught (in promise) SyntaxError: Unexpected token u in JSON at position 0(…)
function selflog_show(id)为什么就是调用不了~~
``` 代码如下: <script type="text/javascript"> function sub(){ var num=parseInt(document.getElementById("purchasenum").value); if(num>1){ document.getElementById("purchasenum").value=--num; } } function add(){ var num=parseInt(document.getElementById("purchasenum").value); if(num<100){ document.getElementById("purchasenum").value=++num; } } function selflog_show(id){ var num=document.getElementById("purchasenum").value; J.dialog.get({id:'haoyue_creat',title:'购物成功',width: 600,height:400, link:'<%=path%>/servlet/CartServlet?id='+id+'&num='+num+'CartAction=add',cover:true}); } </script> body中的代码: <h2><%=i.getName()%></h2> <p>商品ID=<%=i.getId()%></p> <span> <span>¥<%=i.getPrice()%></span><br><br><br> <!-- <label>数量:</label> --> 数量: <span id="sub" onclick="sub();">-</span> <span id="add" onclick="add();">+</span> <input type="text" name="purchasenum" id="purchasenum" value="1" /> <a href="javaScript:selflog_show(<%=i.getId()%>)"> <button type="button" class="btn btn-fefault cart"> <i class="fa fa-shopping-cart"></i> 加入购物车 </button> </a> <!-- <button type="button" class="btn btn-fefault cart"> <i class="fa fa-shopping-cart"></i> 加入购物车 </button> --> </span> <p><b>库存:</b> <%=i.getStock()%></p> <p><b>产地:</b> <%=i.getCity()%> </p> <%} %> ``` 出现的错误如下: 一旦点击“加入购物车” 出现: Goods_Details.jsp?id=1:58 Uncaught ReferenceError: J is not defined at selflog_show (Goods_Details.jsp?id=1:58) at <anonymous>:1:1 bootstrap.min.js:7 Uncaught TypeError: Cannot read property 'offsetWidth' of undefined at b.slide (bootstrap.min.js:7) at b.next (bootstrap.min.js:7) at i (jquery.js:4)  ​ 拜托各位啦
Ext itemeselect组件如何获取右边的值
function comboData(jsonStr){ //var obj = jsonStr.parseJSON(); //alert(obj.abbr); return JSON.parse(jsonStr); } var ds; Ext.onReady(function() { ds=Ext.create('Ext.data.Store',{ fields : [ { name : 'name', type : 'int' }, ], proxy:{ type:'ajax', url:'${contextPath}/getNeedLoginWebGroup.${actionExtension}', reader:{ type:'json', rootProperty:'rows', } }, }); var isForm = Ext.widget('form', { id:'isform', width: 700, bodyPadding: 10, height: 400, renderTo: 'itemselector', layout: 'fit', tbar: [ { xtype: 'combo', id:'wlid',fieldLabel:'白标',dock:'top', labelAlign:'right', store:Ext.create('Ext.data.Store',{ fields:['name','abbr'], data:comboData('${cmyJsonStr}') }), displayField:'name', valueField:'abbr', listeners:{ afterrender:function(com){ com.select(""); }, change:function(){ var container=Ext.getCmp('groupName'); var groupNameURL = "${contextPath}/listGroupNamesWebGroup.${actionExtension}"; container.removeAll(true); $.post(groupNameURL,{'model.whiteid':Ext.getCmp('wlid').value},function(datas){ container.add({ xtype:'combo', id:'groupNames', matchFieldWidth:false, editable:false, store:Ext.create('Ext.data.Store',{ fields:['name','abbr'], data:comboData(datas) }), displayField:'name', valueField:'abbr', listeners:{ change:function(){ var i=isForm.getForm().findField("itemselector"); i.reset.call(i); var param=new Object(); var name='model.groupName'; var value=Ext.getCmp('groupNames').value; param[name]=value; ds.getProxy().setExtraParams(param); ds.load(); } } }); }) } } }, {xtype:'fieldcontainer',id:'groupName',dock:'top',fieldLabel:'网站组', labelAlign:'right', layout:{ type:'hbox', align:'stretch', } }, ], items:[{ xtype: 'itemselector', name: 'itemselector', id: 'itemselector-field', anchor: '100%', html:"", store: ds, displayField: 'name', valueField: 'name', fromTitle: '可用账号', toTitle: '已选账号' }], //注释的部分报错:Uncaught TypeError: Cannot read property 'model' of undefined /* items:[{ xtype: 'itemselector', id : '_left', //imagePath: '../ux/images/',//左右移动的图片 fromTitle: '可用账号', toTitle: '已选账号', multiselects: [{ //定义左边数据 store: ds, displayField: 'name', valueField: 'name' },{ //定义右边为空数据 id:'_right', store: [] }], }], */ }); }); ``` ```
ECharts两组数据,数据量不同,当鼠标移动只有一组数据的地方的时候会报错
如题,我需要用Echarts做个折线图,里面有两组数据,但是其中一组数据的数据量较少,到了后面会只有一剩一组数据,当鼠标一上去的时候就会报错 以下是代码 js ``` $(function(){ $("#try").click(getData); }) function getData(){ var name = $("#try").val(); set_dates(name); set_prices1(name); set_prices2("诚德"); show_line(); } function set_dates(name){ $.ajax({ "url":path+"/stock/dates.do", "type":"post", "dataType":"json", "data":{"name":name}, "success":function(result){ if(result.state==0){ var dates = result.data; addCookie("dates",dates,2); } }, "error":function(){ console.log("获取失败"); } }) } function set_prices1(name){ $.ajax({ "url":path+"/stock/prices.do", "type":"post", "dataType":"json", "data":{"name":name}, "success":function(result){ if(result.state==0){ var prices = result.data; console.log(prices); addCookie("prices1",prices,2); } }, "error":function(){ console.log("获取失败"); } }) } function set_prices2(name){ $.ajax({ "url":path+"/stock/prices.do", "type":"post", "dataType":"json", "data":{"name":name}, "success":function(result){ if(result.state==0){ var prices = result.data; console.log(prices); addCookie("prices2",prices,2); } }, "error":function(){ console.log("获取失败"); } }) } ``` jsp ``` <%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <html> <head> <script type="text/javascript" src="echarts/jquery.min.js"></script> <script type="text/javascript" src="echarts/echarts.js"></script> <script type="text/javascript" src="scripts/for.js"></script> <script type="text/javascript" src="scripts/cookie_util.js"></script> <script type="text/javascript" src="scripts/path.js"></script> </head> <body style="font-size: 30px;"> <!-- 为ECharts准备一个具备大小(宽高)的DOM --> <div id="main" style="width: 600px; height: 400px"></div> <input id="try" type="button" value="宏旺"> <script type="text/javascript"> //基于准备好的dom,初始化echarts实例 var myChart = echarts.init(document.getElementById("main")); //指定图表的配置项和数据 function show_line(){ var dates = getCookie("dates").split(","); var data2 = getCookie("prices1").split(","); var data1 = getCookie("prices2").split(",") console.log("日期集合为:"+dates); console.log("数字集合3为:"+data2); console.log("数字集合2为:"+data1); option = { title : { text : '折线对比图示例', left : 'center' }, tooltip : { trigger : 'axis', formatter:function(params)//数据格式 { var relVal = params[0].name+"<br/>"; relVal += params[0].seriesName+ ' : ' + params[0].value+"<br/>"; relVal +=params[1].seriesName+ ' : ' +params[1].value+"<br/>"; return relVal; } }, legend : { left : 'left', textStyle : { color : '#fff' }, data : [ '第2个数据', '第1个数据' ] }, grid : { left : '10%', right : '10%', bottom : '15%' }, xAxis : { type : 'category', name : 'x', axisLine : { onZero : false }, splitLine : { show : false }, splitLine : { show : false }, data : dates }, grid : { left : '3%', right : '4%', bottom : '3%', containLabel : true }, yAxis : { type : 'log', name : 'y', min:7000, max:15000, scale : true, splitArea : { show : true } }, dataZoom : [ { textStyle : { color : '#8392A5' }, handleIcon : 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z', handleSize : '80%', dataBackground : { areaStyle : { color : '#8392A5' }, lineStyle : { opacity : 0.8, color : '#8392A5' } }, handleStyle : { color : '#fff', shadowBlur : 3, shadowColor : 'rgba(0, 0, 0, 0.6)', shadowOffsetX : 2, shadowOffsetY : 2 } }, { type : 'inside' } ], series : [ { name : '第2个数据', type : 'line', data : data2, }, { name : '第1个数据', type : 'line', data : data1, }, ] }; //使用刚制定的配置项和数据显示图表 myChart.setOption(option); } </script> </body> </html> ``` 报错内容 ``` echartsDemo.jsp:42 Uncaught TypeError: Cannot read property 'seriesName' of undefined at formatter (echartsDemo.jsp:42) at ExtendedClass._showTooltipContent (echarts.js:58535) at ExtendedClass.<anonymous> (echarts.js:58415) at echarts.js:3357 at ExtendedClass._showOrMove (echarts.js:58329) at ExtendedClass._showAxisTooltip (echarts.js:58404) at ExtendedClass._tryShow (echarts.js:58301) at ExtendedClass.manuallyShowTip (echarts.js:58187) at callView (echarts.js:952) at ECharts.<anonymous> (echarts.js:946) ``` 第一次发表这种提问,语言组织能力有限,如果有大神看懂了,麻烦指导一下,谢谢
安装了heroku的CLI工具包后,在mac终端登录时出现错误
$ heroku login heroku: Enter your login credentials Email: TypeError: Cannot read property 'body' of undefined at new HerokuAPIError (/usr/local/Cellar/heroku/7.0.86/libexec/node_modules/@heroku-cli/command/lib/api_client.js:12:33) at Login.login (/usr/local/Cellar/heroku/7.0.86/libexec/node_modules/@heroku-cli/command/lib/login.js:78:19)# New Document 本人初学ruby on rails,这些错误代码是安装的工具自带的,而且是最新版,重新安装过了也没用,https://devcenter.heroku.com/articles/heroku-cli 安装的官网在这里,按照步骤操作的,为什么会出现这个问题呢,希望大神们帮帮我!js文件代码如下。 # 第一个: "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const errors_1 = require("@oclif/errors"); const netrc_parser_1 = tslib_1.__importDefault(require("netrc-parser")); const url = tslib_1.__importStar(require("url")); const deps_1 = tslib_1.__importDefault(require("./deps")); const login_1 = require("./login"); const vars_1 = require("./vars"); class HerokuAPIError extends errors_1.CLIError { constructor(httpError) { let options = httpError.body; if (!options || !options.message) throw httpError; let info = []; if (options.id) info.push(`Error ID: ${options.id}`); if (options.app && options.app.name) info.push(`App: ${options.app.name}`); if (options.url) info.push(`See ${options.url} for more information.`); if (info.length) super([options.message, ''].concat(info).join('\n')); else super(options.message); this.http = httpError; this.body = options; } } exports.HerokuAPIError = HerokuAPIError; class APIClient { constructor(config, options = {}) { this.config = config; this.options = options; this._login = new login_1.Login(this.config, this); this.config = config; if (options.required === ‘undefined’) options.required = true; options.preauth = options.preauth !== false; this.options = options; let apiUrl = url.URL ? new url.URL(vars_1.vars.apiUrl) : url.parse(vars_1.vars.apiUrl); let envHeaders = JSON.parse(process.env.HEROKU_HEADERS || '{}'); this.preauthPromises = {}; let self = this; const opts = { host: apiUrl.host, headers: Object.assign({ accept: 'application/vnd.heroku+json; version=3', 'user-agent': `heroku-cli/${self.config.version} ${self.config.platform}` }, envHeaders), }; this.http = class APIHTTPClient extends deps_1.default.HTTP.HTTP.create(opts) { static async twoFactorRetry(err, url, opts = {}, retries = 3) { const app = err.body.app ? err.body.app.name : null; if (!app || !options.preauth) { opts.headers = opts.headers || {}; opts.headers['Heroku-Two-Factor-Code'] = await self.twoFactorPrompt(); return this.request(url, opts, retries); } else { // if multiple requests are run in parallel for the same app, we should // only preauth for the first so save the fact we already preauthed if (!self.preauthPromises[app]) { self.preauthPromises[app] = self.twoFactorPrompt().then((factor) => self.preauth(app, factor)); } await self.preauthPromises[app]; return this.request(url, opts, retries); } } static async request(url, opts = {}, retries = 3) { opts.headers = opts.headers || {}; if (!Object.keys(opts.headers).find(h => h.toLowerCase() === 'authorization')) { opts.headers.authorization = `Bearer ${self.auth}`; } retries--; try { return await super.request(url, opts); } catch (err) { if (!(err instanceof deps_1.default.HTTP.HTTPError)) throw err; if (retries > 0) { if (opts.retryAuth !== false && err.http.statusCode === 401 && err.body.id === 'unauthorized') { if (!self.authPromise) self.authPromise = self.login(); await self.authPromise; opts.headers.authorization = `Bearer ${self.auth}`; return this.request(url, opts, retries); } if (err.http.statusCode === 403 && err.body.id === 'two_factor') { return this.twoFactorRetry(err, url, opts, retries); } } throw new HerokuAPIError(err); } } }; } get twoFactorMutex() { if (!this._twoFactorMutex) { this._twoFactorMutex = new deps_1.default.Mutex(); } return this._twoFactorMutex; } get auth() { if (!this._auth) { if (process.env.HEROKU_API_TOKEN && !process.env.HEROKU_API_KEY) deps_1.default.cli.warn('HEROKU_API_TOKEN is set but you probably meant HEROKU_API_KEY'); this._auth = process.env.HEROKU_API_KEY; if (!this._auth) { deps_1.default.netrc.loadSync(); this._auth = deps_1.default.netrc.machines[vars_1.vars.apiHost] && deps_1.default.netrc.machines[vars_1.vars.apiHost].password; } } return this._auth; } set auth(token) { delete this.authPromise; this._auth = token; } twoFactorPrompt() { deps_1.default.yubikey.enable(); return this.twoFactorMutex.synchronize(async () => { try { let factor = await deps_1.default.cli.prompt('Two-factor code', { type: 'mask' }); deps_1.default.yubikey.disable(); return factor; } catch (err) { deps_1.default.yubikey.disable(); throw err; } }); } preauth(app, factor) { return this.put(`/apps/${app}/pre-authorizations`, { headers: { 'Heroku-Two-Factor-Code': factor }, }); } get(url, options = {}) { return this.http.get(url, options); } post(url, options = {}) { return this.http.post(url, options); } put(url, options = {}) { return this.http.put(url, options); } patch(url, options = {}) { return this.http.patch(url, options); } delete(url, options = {}) { return this.http.delete(url, options); } stream(url, options = {}) { return this.http.stream(url, options); } request(url, options = {}) { return this.http.request(url, options); } login(opts = {}) { return this._login.login(opts); } async logout() { try { await this._login.logout(); } catch (err) { errors_1.warn(err); } delete netrc_parser_1.default.machines['api.heroku.com']; delete netrc_parser_1.default.machines['git.heroku.com']; await netrc_parser_1.default.save(); } get defaults() { return this.http.defaults; } } exports.APIClient = APIClient; # 第二个: "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const color_1 = tslib_1.__importDefault(require("@heroku-cli/color")); const cli_ux_1 = tslib_1.__importDefault(require("cli-ux")); const fs = tslib_1.__importStar(require("fs-extra")); const http_call_1 = tslib_1.__importDefault(require("http-call")); const netrc_parser_1 = tslib_1.__importDefault(require("netrc-parser")); const opn = require("opn"); const os_1 = require("os"); const path = tslib_1.__importStar(require("path")); const api_client_1 = require("./api_client"); const vars_1 = require("./vars"); const debug = require('debug')('heroku-cli-command'); const headers = (token) => ({ headers: { accept: 'application/vnd.heroku+json; version=3', authorization: `Bearer ${token}` } }); class Login { constructor(config, heroku) { this.config = config; this.heroku = heroku; this.loginHost = process.env.HEROKU_LOGIN_HOST || 'https://cli-login.heroku.com'; } async login(opts = {}) { await this.loadSettings(); let loggedIn = false; try { // timeout after 10 minutes setTimeout(() => { if (!loggedIn) cli_ux_1.default.error('timed out'); }, 1000 * 60 * 10).unref(); if (process.env.HEROKU_API_KEY) cli_ux_1.default.error('Cannot log in with HEROKU_API_KEY set'); await netrc_parser_1.default.load(); const previousEntry = netrc_parser_1.default.machines['api.heroku.com']; let input = opts.method; const defaultMethod = this.settings.method || 'interactive'; if (!input) { if (opts.expiresIn) { // can't use browser with --expires-in input = 'interactive'; } else if (this.enableBrowserLogin()) { input = await cli_ux_1.default.prompt(`heroku: Login with [${color_1.default.green('b')}]rowser, [${color_1.default.green('i')}]nteractive, or [${color_1.default.green('s')}]so (enterprise-only)`, { default: defaultMethod }); } else { input = defaultMethod || 'interactive'; } } try { if (previousEntry && previousEntry.password) await this.logout(previousEntry.password); } catch (err) { cli_ux_1.default.warn(err); } let auth; delete this.settings.method; switch (input) { case 'b': case 'browser': auth = await this.browser(); break; case 'i': case 'interactive': auth = await this.interactive(previousEntry && previousEntry.login, opts.expiresIn); break; case 's': case 'sso': auth = await this.sso(); break; default: return this.login(opts); } await this.saveToken(auth); await this.saveSettings(); } catch (err) { throw new api_client_1.HerokuAPIError(err); } finally { loggedIn = true; } } async logout(token = this.heroku.auth) { if (!token) return debug('no credentials to logout'); const requests = []; // for SSO logins we delete the session since those do not show up in // authorizations because they are created a trusted client requests.push(http_call_1.default.delete(`${vars_1.vars.apiUrl}/oauth/sessions/~`, headers(token)) .catch(err => { if (!err.http) throw err; if (err.http.statusCode === 404 && err.http.body && err.http.body.id === 'not_found' && err.http.body.resource === 'session') { return; } if (err.http.statusCode === 401 && err.http.body && err.http.body.id === 'unauthorized') { return; } throw err; })); // grab all the authorizations so that we can delete the token they are // using in the CLI. we have to do this rather than delete ~ because // the ~ is the API Key, not the authorization that is currently requesting requests.push(http_call_1.default.get(`${vars_1.vars.apiUrl}/oauth/authorizations`, headers(token)) .then(async ({ body: authorizations }) => { // grab the default authorization because that is the token shown in the // dashboard as API Key and they may be using it for something else and we // would unwittingly break an integration that they are depending on const d = await this.defaultToken(); if (d === token) return; return Promise.all(authorizations .filter(a => a.access_token && a.access_token.token === this.heroku.auth) .map(a => http_call_1.default.delete(`${vars_1.vars.apiUrl}/oauth/authorizations/${a.id}`, headers(token)))); }) .catch(err => { if (!err.http) throw err; if (err.http.statusCode === 401 && err.http.body && err.http.body.id === 'unauthorized') { return []; } throw err; })); await Promise.all(requests); } async browser() { const { body: urls } = await http_call_1.default.post(`${this.loginHost}/auth`); // TODO: handle browser const url = `${this.loginHost}${urls.browser_url}`; debug(`opening browser to ${url}`); const cp = await opn(url, { wait: false }); cp.on('error', cli_ux_1.default.error); const showUrl = () => cli_ux_1.default.warn(`Cannot open browser. Go to ${color_1.default.greenBright(url)} to finish login or run ${color_1.default.cmd('heroku login --interactive')}\n`); if (process.env.HEROKU_TESTING_HEADLESS_LOGIN === '1') showUrl(); cp.on('close', code => { if (code !== 0) showUrl(); }); cli_ux_1.default.action.start('Waiting for login'); const { body: auth } = await http_call_1.default.get(`${this.loginHost}${urls.cli_url}`, { headers: { authorization: `Bearer ${urls.token}`, } }); if (auth.error) cli_ux_1.default.error(auth.error); this.heroku.auth = auth.access_token; cli_ux_1.default.action.start('Logging in'); const { body: account } = await http_call_1.default.get(`${vars_1.vars.apiUrl}/account`, headers(auth.access_token)); cli_ux_1.default.action.stop(); return { login: account.email, password: auth.access_token, }; } async interactive(login, expiresIn) { process.stderr.write('heroku: Enter your login credentials\n'); login = await cli_ux_1.default.prompt('Email', { default: login }); let password = await cli_ux_1.default.prompt('Password', { type: 'hide' }); let auth; try { auth = await this.createOAuthToken(login, password, { expiresIn }); } catch (err) { if (!err.body || err.body.id !== 'two_factor') throw err; let secondFactor = await cli_ux_1.default.prompt('Two-factor code', { type: 'mask' }); auth = await this.createOAuthToken(login, password, { expiresIn, secondFactor }); } this.heroku.auth = auth.password; return auth; } async createOAuthToken(username, password, opts = {}) { function basicAuth(username, password) { let auth = [username, password].join(':'); auth = Buffer.from(auth).toString('base64'); return `Basic ${auth}`; } let headers = { accept: 'application/vnd.heroku+json; version=3', authorization: basicAuth(username, password) }; if (opts.secondFactor) headers['Heroku-Two-Factor-Code'] = opts.secondFactor; const { body: auth } = await http_call_1.default.post(`${vars_1.vars.apiUrl}/oauth/authorizations`, { headers, body: { scope: ['global'], description: `Heroku CLI login from ${os_1.hostname()}`, expires_in: opts.expiresIn || 60 * 60 * 24 * 365 // 1 year } }); return { password: auth.access_token.token, login: auth.user.email }; } async saveToken(entry) { const hosts = [vars_1.vars.apiHost, vars_1.vars.httpGitHost]; hosts.forEach(host => { if (!netrc_parser_1.default.machines[host]) netrc_parser_1.default.machines[host] = {}; netrc_parser_1.default.machines[host].login = entry.login; netrc_parser_1.default.machines[host].password = entry.password; delete netrc_parser_1.default.machines[host].method; delete netrc_parser_1.default.machines[host].org; }); if (netrc_parser_1.default.machines._tokens) { netrc_parser_1.default.machines._tokens.forEach((token) => { if (hosts.includes(token.host)) { token.internalWhitespace = '\n '; } }); } await netrc_parser_1.default.save(); } async defaultToken() { try { const { body: authorization } = await http_call_1.default.get(`${vars_1.vars.apiUrl}/oauth/authorizations/~`, headers(this.heroku.auth)); return authorization.access_token && authorization.access_token.token; } catch (err) { if (!err.http) throw err; if (err.http.statusCode === 404 && err.http.body && err.http.body.id === 'not_found' && err.body.resource === 'authorization') return; if (err.http.statusCode === 401 && err.http.body && err.http.body.id === 'unauthorized') return; throw err; } } enableBrowserLogin() { if (!process.env.HEROKU_LOGIN_HOST) return false; if (this.config.name === '@heroku-cli/command') return true; return this.config.channel !== 'stable'; } async sso() { let url = process.env.SSO_URL; let org = process.env.HEROKU_ORGANIZATION || this.settings.org; if (!url) { if (org) { org = await cli_ux_1.default.prompt('Organization name', { default: org }); } else { org = await cli_ux_1.default.prompt('Organization name'); } url = `https://sso.heroku.com/saml/${encodeURIComponent(org)}/init?cli=true`; } cli_ux_1.default.action.start('Opening browser for login'); // TODO: handle browser debug(`opening browser to ${url}`); await opn(url, { wait: false }); const password = await cli_ux_1.default.prompt('Access token', { type: 'mask' }); cli_ux_1.default.action.start('Validating token'); this.heroku.auth = password; const { body: account } = await http_call_1.default.get(`${vars_1.vars.apiUrl}/account`, headers(password)); this.settings.method = 'sso'; this.settings.org = org; return { password, login: account.email }; } async loadSettings() { try { this.settings = await fs.readJSON(this.settingsPath); } catch (err) { if (err.code !== 'ENOENT') cli_ux_1.default.warn(err); else debug(err); this.settings = {}; } } async saveSettings() { try { if (Object.keys(this.settings).length === 0) { await fs.remove(this.settingsPath); } else { await fs.outputJSON(this.settingsPath, this.settings); } } catch (err) { cli_ux_1.default.warn(err); } } get settingsPath() { return path.join(this.config.dataDir, 'login.json'); } } exports.Login = Login;
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
《MySQL 性能优化》之理解 MySQL 体系结构
本文介绍 MySQL 的体系结构,包括物理结构、逻辑结构以及插件式存储引擎。
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
复习一周,京东+百度一面,不小心都拿了Offer
京东和百度一面都问了啥,面试官百般刁难,可惜我全会。
Java 14 都快来了,为什么还有这么多人固守Java 8?
从Java 9开始,Java版本的发布就让人眼花缭乱了。每隔6个月,都会冒出一个新版本出来,Java 10 , Java 11, Java 12, Java 13, 到2020年3月份,...
达摩院十大科技趋势发布:2020 非同小可!
【CSDN编者按】1月2日,阿里巴巴发布《达摩院2020十大科技趋势》,十大科技趋势分别是:人工智能从感知智能向认知智能演进;计算存储一体化突破AI算力瓶颈;工业互联网的超融合;机器间大规模协作成为可能;模块化降低芯片设计门槛;规模化生产级区块链应用将走入大众;量子计算进入攻坚期;新材料推动半导体器件革新;保护数据隐私的AI技术将加速落地;云成为IT技术创新的中心 。 新的画卷,正在徐徐展开。...
轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API ...
讲真,这两个IDE插件,可以让你写出质量杠杠的代码
周末躺在床上看《拯救大兵瑞恩》 周末在闲逛的时候,发现了两个优秀的 IDE 插件,据说可以提高代码的质量,我就安装了一下,试了试以后发现,确实很不错,就推荐给大家。 01、Alibaba Java 代码规范插件 《阿里巴巴 Java 开发手册》,相信大家都不会感到陌生,其 IDEA 插件的下载次数据说达到了 80 万次,我今天又贡献了一次。嘿嘿。 该项目的插件地址: https://github....
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
python爬取百部电影数据,我分析出了一个残酷的真相
2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27亿,同比增长0.64%。 看上去似乎是一片大好对不对?不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
2020 年,大火的 Python 和 JavaScript 是否会被取而代之?
Python 和 JavaScript 是目前最火的两大编程语言,但是2020 年,什么编程语言将会取而代之呢? 作者 |Richard Kenneth Eng 译者 |明明如月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: Python 和 JavaScript 是目前最火的两大编程语言。然而,他们不可能永远屹立不倒。最终,必将像其他编程语言一...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
Idea 中最常用的10款插件(提高开发效率),一定要学会使用!
学习使用一些插件,可以提高开发效率。对于我们开发人员很有帮助。这篇博客介绍了开发中使用的插件。
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } ...
【蘑菇街技术部年会】程序员与女神共舞,鼻血再次没止住。(文末内推)
蘑菇街技术部的年会,别开生面,一样全是美女。
那个在阿里养猪的工程师,5年了……
简介: 在阿里,走过1825天,没有趴下,依旧斗志满满,被称为“五年陈”。他们会被授予一枚戒指,过程就叫做“授戒仪式”。今天,咱们听听阿里的那些“五年陈”们的故事。 下一个五年,猪圈见! 我就是那个在养猪场里敲代码的工程师,一年多前我和20位工程师去了四川的猪场,出发前总架构师慷慨激昂的说:同学们,中国的养猪产业将因为我们而改变。但到了猪场,发现根本不是那么回事:要个WIFI,没有;...
为什么程序猿都不愿意去外包?
分享外包的组织架构,盈利模式,亲身经历,以及根据一些外包朋友的反馈,写了这篇文章 ,希望对正在找工作的老铁有所帮助
Java校招入职华为,半年后我跑路了
何来 我,一个双非本科弟弟,有幸在 19 届的秋招中得到前东家华为(以下简称 hw)的赏识,当时秋招签订就业协议,说是入了某 java bg,之后一系列组织架构调整原因等等让人无法理解的神操作,最终毕业前夕,被通知调往其他 bg 做嵌入式开发(纯 C 语言)。 由于已至于校招末尾,之前拿到的其他 offer 又无法再收回,一时感到无力回天,只得默默接受。 毕业后,直接入职开始了嵌入式苦旅,由于从未...
世界上有哪些代码量很少,但很牛逼很经典的算法或项目案例?
点击上方蓝字设为星标下面开始今天的学习~今天分享四个代码量很少,但很牛逼很经典的算法或项目案例。1、no code 项目地址:https://github.com/kelseyhight...
​两年前不知如何编写代码的我,现在是一名人工智能工程师
全文共3526字,预计学习时长11分钟 图源:Unsplash 经常有小伙伴私信给小芯,我没有编程基础,不会写代码,如何进入AI行业呢?还能赶上AI浪潮吗? 任何时候努力都不算晚。 下面,小芯就给大家讲一个朋友的真实故事,希望能给那些处于迷茫与徘徊中的小伙伴们一丝启发。(下文以第一人称叙述) 图源:Unsplash 正如Elsa所说,职业转换是...
强烈推荐10本程序员必读的书
很遗憾,这个春节注定是刻骨铭心的,新型冠状病毒让每个人的神经都是紧绷的。那些处在武汉的白衣天使们,尤其值得我们的尊敬。而我们这些窝在家里的程序员,能不外出就不外出,就是对社会做出的最大的贡献。 有些读者私下问我,窝了几天,有点颓丧,能否推荐几本书在家里看看。我花了一天的时间,挑选了 10 本我最喜欢的书,你可以挑选感兴趣的来读一读。读书不仅可以平复恐惧的压力,还可以对未来充满希望,毕竟苦难终将会...
作为一个程序员,内存的这些硬核知识你必须懂!
我们之前讲过CPU,也说了CPU和内存的那点事儿,今天咱就再来说说有关内存,作为一个程序员,你必须要懂的哪那些硬核知识! 大白话聊一聊,很重要! 先来大白话的跟大家聊一聊,我们这里说的内存啊,其实就是说的我们电脑里面的内存条,所以嘞,内存就是内存条,数据要放在这上面才能被cpu读取从而做运算,还有硬盘,就是电脑中的C盘啥的,一个程序需要运行的话需要向内存申请一块独立的内存空间,这个程序本身是存放在...
非典逼出了淘宝和京东,新冠病毒能够逼出什么?
loonggg读完需要5分钟速读仅需 2 分钟大家好,我是你们的校长。我知道大家在家里都憋坏了,大家可能相对于封闭在家里“坐月子”,更希望能够早日上班。今天我带着大家换个思路来聊一个问题...
立即提问