【问题标题】:Using Array Functions in Angular Application issue在 Angular 应用程序问题中使用数组函数
【发布时间】:2022-08-17 23:53:22
【问题描述】:

我已经开始在使用 array.find() 或 array.map()、array.filter() 等数组函数的代码部分本地收到错误。

例如

let route = authyObj.routes.find(o => o.route.toLowerCase() == routeMap.toLowerCase());

这是以前的工作代码。当部署在服务器上时,相同的代码仍然可以正常运行,并且问题只是本地的。应用程序在本地编译和运行,但一旦遇到这些函数之一就会失败,并出现 \"typeError: authyObj.routes.find is not a function\\n\" 或类似的情况。

我可以通过重新分配给一个新数组来解决这个问题

let rs : Array<Authobj> = authyObj.routes.$values;
rs.find(o => o.route.toLowerCase() == routeMap.toLowerCase());

但这在以前不是必需的。 我已经尝试删除项目并从源代码管理中获得新鲜感,这与部署到服务器相同,并且与同事正在运行,删除 node_modules,npm install 等相同。最终结果相同。

在本地看来,我的数组被视为对象(带有 $id),我必须指定使用 $value。

我猜我无意中更新/删除了一些本地设置,但不知道是什么。

请提供任何帮助或想法。

我相信我在跑步

\"@angular-devkit/build-angular\": \"^12.2.15\", \"@angular/cli\": \"^12.2.15\", \"@angular/compiler-cli\": \"~12.2.15\", \"rxjs\": \"~6.6.0\", \"tslib\": \"^2.2.0\", \"打字稿\": \"~4.3.5\"

  • 在您的示例中,您表明它不适用于authyObj.routes.find()。在重新分配后的工作示例中,您显示authyObj.routes.$values.find()
  • 是的@BizzyBob,这是正确的,但我不确定是什么本地设置或缺少库等可能导致我需要指定 $values。应该没有必要。就像我在 ES6 或其他东西中失去了这个功能。我不认为这是代码问题,因为它可以在其他地方使用。它必须是我机器上的本地内容。

标签: javascript arrays angular


【解决方案1】:

我解决了这个问题。我的修复涉及升级我的 Angular 版本并反过来升级我的 NPM 和 Node 版本。

角 CLI:14.1.2 节点:16.15.0 包管理器:npm 8.5.5

我不能 100% 确定是否是 Angular 的升级解决了这个问题。 (我升级到了一位同事使用的相同版本,该同事也一直在从事该项目)。可能是我的版本以某种方式损坏了,并且可能只是卸载并重新安装相同的版本会产生相同的效果。

我在全球范围内做到了这一点。

有趣的是,当我构建项目时,它说我的全局 CLI 领先于我的本地 CLI,即 12.2.15,它将使用本地 CLI。这似乎表明版本不是问题,而是它使用了一个损坏的全局副本,但现在在本地回退到相同的版本很好。

【讨论】:

    猜你喜欢
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    • 2020-02-22
    • 1970-01-01
    • 2015-03-21
    • 2017-12-04
    相关资源
    最近更新 更多