【问题标题】:Angular 7: params.map is not a functionAngular 7:params.map 不是函数
【发布时间】:2019-10-28 20:00:03
【问题描述】:

在尝试使用 ng serve 运行我的 Angular 7 应用程序时,我突然收到以下错误:

ERROR in params.map is not a function

我不知道这个错误是从哪里来的,而且 ng 并没有透露太多细节。

我尝试重新安装节点,运行npm cache clean --force。我也尝试过恢复到以前的提交,这让我认为这是 npm 的问题,而不是我的代码。

有人见过这个吗?谷歌搜索只能得到微薄的结果。

【问题讨论】:

  • params 是一个 observable,所以需要使用 subscribe 方法。有一个线程与您的问题相似 - stackoverflow.com/questions/40272258/…
  • 不幸的是,这没有帮助:(
  • @serlingpa,昨天我遇到了一个错误,与这个不太清楚的错误消息有关。就我而言,问题显然是我构建桶文件(index.ts)的方式。看看,也许它可以帮助你:stackoverflow.com/q/55537262/6433166

标签: angular npm angular7


【解决方案1】:

现在 rxjs 已经更新,您需要将它与 pipe 结合使用,因为 Observable 本身不再具有 map 功能。相反,您应该这样做:

import { map } from 'rxjs/operators';

//...

params.pipe(
  map(() => return true) // Do whatever here
)

【讨论】:

  • 嗯?你在说什么?我没有在我的代码中使用它。没有params.pipe
  • 我是说你需要使用它,因为RXJS已经更新了,所以Observable不再直接有.map函数了。
  • 抱歉,我不明白你的意思。我没有在我的代码中使用params.map。错误发生在构建过程结束时,然后是failed to compile
  • 对不起,我很抱歉,我没有意识到。它必须来自您的依赖项之一...您是否也尝试过安装rxjs-compatacademind.com/learn/javascript/rxjs-6-what-changed
  • 我已经添加了那个包,但是没有效果。
【解决方案2】:

我可以确认在使用带有 index.ts 的桶时也会出现此问题,特别是在您使用库项目时。 尽可能避免使用嵌套的 index.ts 桶并直接在公共 api 中导出。

来自用户@user184994

export * from './effects'

// instead of:
// import * as SOMETHING from './effects'
// export {SOMETHING};

这是 Angular 和嵌套桶的一个已知问题,其中 webpack 或 Angular 编译器无法映射嵌套的 index.ts 桶

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    • 2019-04-24
    • 1970-01-01
    • 2019-05-16
    • 2020-01-10
    • 2015-09-01
    • 2018-03-19
    相关资源
    最近更新 更多