【问题标题】:Importing moment in Angular 6在 Angular 6 中导入时刻
【发布时间】:2019-02-22 13:53:49
【问题描述】:

我在角度 6 中导入了矩:

import moment from 'moment'

let formatted = moment(startDate).tz(timezone).format();

这似乎工作正常...但 ng serve 输出以下错误:

Module '"/my/project/node_modules/moment/moment"' has no default export.

好的,我明白这个错误;它说那一刻不是默认导出的……但是当我尝试以这种方式导出时:

import { moment } from 'moment'

但是,错误表明时刻实际上是一个对象,而不是一个函数。

它在第一步中是如何工作的? 我应该如何导入“时刻”?

更新 我也按照另一个问题中的建议尝试过......

import * as moment from 'moment';

但是我得到了以下结果:

ERROR in node_modules/@angular/core/src/render3/ng_dev_mode.d.ts(9,11): error TS2451: Cannot redeclare block-scoped variable 'ngDevMode'.
node_modules/angular-moment-timezone/node_modules/@angular/core/src/render3/ng_dev_mode.d.ts(9,11): error TS2451: Cannot redeclare block-scoped variable 'ngDevMode'.

【问题讨论】:

  • 考虑使用Luxon,这是对 Moment 的现代重写。
  • @HereticMonkey 哇,好用!
  • 不,这不是重复的。该答案中的解决方案不能解决我的问题。我用 UPDATE 解释了
  • 您的问题与库 angular-moment-timezone 相关,而不是具体的时刻。尝试改用 moment-timezone。

标签: javascript angular momentjs


【解决方案1】:

尝试以下导入时刻:

import * as moment from 'moment';

希望对您有所帮助!

【讨论】:

  • 请查看我的问题中的更新,我也有这个解决方案的问题。
  • 您的意思是,如果您删除此导入以及代码中与时刻相关的任何内容,则在运行构建时不会看到此问题?
  • 我可以使用“import moment from 'moment'”运行代码......但我无法再次构建或启动 ng serve。这就是我觉得奇怪的地方。
  • 这可能是一个更大的问题,可以通过更新 Angular 版本来解决。 github.com/angular/angular/issues/21670
  • 因此您的问题似乎与 angular-moment-timezone 库有关。你可以只使用时刻时区吗?甚至尝试删除角矩时区并删除与时区相关的任何代码,它应该会构建。
【解决方案2】:

我找到了解决方案...首先我建议review this issue page

  1. 我放弃了 angular-moment-timezone 并开始使用 moment-timezone,ngDevMode 错误的原因是 angular-moment-timezone 包有另一个节点-里面的模块。这是一个糟糕的包管理。

  2. 我比导入为:

    import * as moment from 'moment'; import 'moment-timezone';

现在我的代码正在运行...项目也在构建。

【讨论】:

    【解决方案3】:

    您可以使用以下方法直接以角度导入矩:-

    import * as moment from 'moment';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-24
      • 1970-01-01
      • 2018-10-18
      • 2018-09-23
      • 1970-01-01
      • 1970-01-01
      • 2018-11-11
      • 2018-11-25
      相关资源
      最近更新 更多