Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript TypeError:无法读取属性";0“;从未定义_Javascript_Google Apps Script_Runtime Error - Fatal编程技术网

Javascript TypeError:无法读取属性";0“;从未定义

Javascript TypeError:无法读取属性";0“;从未定义,javascript,google-apps-script,runtime-error,Javascript,Google Apps Script,Runtime Error,我得到一个非常奇怪的未定义错误: function login(name,pass) { var blob = Utilities.newBlob(pass); var passwordencode = Utilities.base64Encode(blob.getBytes()); var ss = SpreadsheetApp.openById(""); var sheet = ss.getActiveSheet(); var data = sheet.getDataRa

我得到一个非常奇怪的未定义错误:

function login(name,pass) {
  var blob = Utilities.newBlob(pass);
  var passwordencode = Utilities.base64Encode(blob.getBytes());
  var ss = SpreadsheetApp.openById("");
  var sheet = ss.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var i=1;
  while (name != data[i][0]){
    Logger.log(data[i][0]);
    i++;
  }
  if (passwordencode == data[i][1]){
    UserProperties.setProperties({
      "name" :name,
      "pass" : passwordencode
      });
    Logger.log("You are logged in");
  }
  else if (passwordencode != data[i][1]) {
    Logger.log("You are not logged in");
    UserProperties.setProperties({
      "name" : "",
      "pass" : ""
      });
  }
}
使用谷歌脚本。未定义的是while语句,其中while(name!=data[i][0])声明您无法从未定义中读取属性“0”。奇怪的是,如果我删除while语句中的数据[I][0],它在logger.log中仍然有效。还有其他地方。到底发生了什么事

编辑:如果我将while语句更改为If语句,它也会工作。

while会增加I。所以你得到:

data[1][0]
data[2][0]
data[3][0]
...

看起来名称和数据的任何元素都不匹配。因此,while仍然递增,并且到达数组的末尾。我建议使用for循环。

看起来您试图做的是访问“数据”数组中未定义值的属性“0”。如果查看while语句,就会发现这是因为每个循环都将“i”增加1。因此,第一次通过时,您将访问“data[1]”,但在下一个循环中,您将访问“data[2]”等等,而不管数组的长度如何。如果在数组中从未找到属性“0”等于“name”的项,这将导致最终命中未定义的数组元素

将您的while语句添加到此

for(var iIndex = 1; iIndex <= data.length; iIndex++){
    if (data[iIndex][0] === name){
         break;
    };
    Logger.log(data[i][0]);
 };

for(var iIndex=1;iIndex检查数组索引,查看它是否被越界访问

访问类别[0]后,我将数组名称从一个类别更改为另一个类别,但忘了将访问点从类别[0]更改为类别[0],因此也出现了此错误


JavaScript的调试信息很差。在您的情况下,我估计访问权限可能会超出限制。

在正常情况下,当您遇到错误时,会超出数组的限制。
因此,请检查您的数组下标。

对我来说,问题是我使用的包未包含在
package.json中,也未安装

import { ToastrService } from 'ngx-toastr';
所以当编译器试图编译它时,它抛出了一个错误


(我在本地安装了它,在外部服务器上运行构建时抛出错误)

数据是基于1的数组吗?通常它们从索引0开始…在尝试使用子维度之前,应该检查父数组维度是否存在,
if(typeof(data[I])!=“undefined”)
并防止while循环超出数组边界
data[i]。length
将给出其中的元素数。您在不考虑边界的情况下递增
i
i
在OP的代码中从1开始,它永远不会执行
data[0]
我同意。答案已更改。这可以是一条评论。答案应通过一些代码/链接/解释进行更多解释。