Moment: 片刻不开玩笑

创建于 2019-07-16  ·  9评论  ·  资料来源: moment/moment

描述错误
当导入到开发设置中时, import moment from 'moment'可以让时刻有效地工作并完成我想要的一切。 但是,在运行通过调用moment()的代码运行的笑话测试时,出现以下错误:
“ TypeError:moment_1.default不是函数”
奇怪的是,以这种方式导入它: import * as moment from 'moment'允许在测试中使用功能,但不能在生产中使用。 我仔细研究了jest的所有问题,这是一个已报道的问题,但是Jest团队有信心该问题已经解决。

重现
重现行为的步骤:

  1. 在React应用程序中创建一个简单函数,该应用程序调用moment()
  2. 添加一个笑话测试,它将遍历此路径。
  3. 运行测试。
  4. 看到错误

预期行为
在测试和生产中,力矩应该以相同的方式调用。

桌面(请完成以下信息):

  • 操作系统:macOS Mojave
  • 测试:Jest -v 24.8.0

特定时刻的环境
时刻-v 2.24.0

  • 正在使用的其他库:TypeScript

请在您的环境中运行以下代码,并包含输出:
导入矩时的控制台输出,以开发预期的方式进行,即从“矩”导入矩

console.log src/resources/timestamping.tsx:4
      Tue Jul 16 2019 10:58:16 GMT-0400 (Eastern Daylight Time)
    console.log src/resources/timestamping.tsx:5
      7/16/2019, 10:58:16 AM
    console.log src/resources/timestamping.tsx:6
      240
TypeError: Cannot read property 'version' of undefined.

导入矩的控制台输出,如其在测试中的功能一样,即从* moment导入矩

console.log src/resources/timestamping.tsx:4
      Tue Jul 16 2019 11:02:46 GMT-0400 (Eastern Daylight Time)
    console.log src/resources/timestamping.tsx:5
      7/16/2019, 11:02:46 AM
    console.log src/resources/timestamping.tsx:6
      240
    console.log src/resources/timestamping.tsx:8
      2.24.0
Documentation Help Wanted

最有用的评论

const moment = require("moment").default || require("moment")是我想出的,但是只允许使用moment作为函数。
//编辑

import * as mom from "moment";
const moment = require("moment").default || require("moment");

修复角度/笑话问题。 但这仍然是黑客。

所有9条评论

const moment = require("moment").default || require("moment")是我想出的,但是只允许使用moment作为函数。
//编辑

import * as mom from "moment";
const moment = require("moment").default || require("moment");

修复角度/笑话问题。 但这仍然是黑客。

lem 但这仍然是黑客。

谢谢您,先生,这有所帮助。

Moment.js方面可以在这里做什么?

我在使用ts-jest处理打字稿和玩笑时遇到了这个问题。 我最终将babel与jest一起用于打字稿支持,但我不再面对它了。 也许ts-jest库可能在做一些事情

经过更多搜索后,找到了解决方案
https://github.com/aurelia/skeleton-navigation/issues/606#issuecomment -397051406

需要在tsconfig.json中的compileOptions下传递"esModuleInterop": true

@DhrubajitPC很高兴您找到了解决方案。
您可以将其添加到我们的文档中吗?
https://momentjs.com/docs/#/use -it / typescript /

当然...给我一些时间:)

嗯...它似乎已经是常见问题解答的一部分
https://github.com/moment/moment/blob/develop/FAQ.md

似乎只有在将esModuleInterop设置为true时才会出现此错误。
@KonradLinkowski-黑客虽然有所帮助:)

此页面是否有帮助?
0 / 5 - 0 等级