【问题标题】:Moment not found in 'moment' when importing {Moment} from 'moment'从“时刻”导入 {Moment} 时在“时刻”中找不到时刻
【发布时间】:2021-02-12 14:27:11
【问题描述】:

在带有 typescript 的 reactJS 项目中,我正在尝试导入 moment 和类型 Moment

尝试使用import moment, { Moment } from 'moment'

但这让 ESLint 不高兴:ESLint: Moment not found in 'moment'(import/named)

尝试使用import * as moment from 'moment'

这让 typescript 很不爽:TS2349: This expression is not callable. Type 'typeof moment' has no call signatures.

从技术上讲,我真的找不到轻松导入Moment 类型的方法。 下面这行应该很简单,但是很难找到一种可靠的方法来同时导入momentMoment

const [date, setDate] = useState<Moment>(moment());

注意:我不想禁用 ESLint 规则

【问题讨论】:

  • “不开心”是什么意思?实际的错误/警告是什么?
  • 在 tsconfig 中尝试“allowSyntheticDefaultImports”:true。然后看看import moment from 'moment' 是否有效。
  • 这能回答你的问题吗? How can moment.js be imported with typescript?
  • @evolutionxbox 我用错误更新了问题。有趣的是,如果我使用import moment from 'moment',我可以使用moment.Moment 作为类型:)

标签: javascript reactjs typescript momentjs


【解决方案1】:

快速搜索后,您可以根据此线程:How can moment.js be imported with typescript?

import { Moment } from 'moment'
let moment = require('moment');

【讨论】:

  • 这不会使问题重复吗?
  • 是的。那么程序是什么?
  • 如果我们认为该问题可以由其他人回答,我们会将其“标记”为重复。
  • 哦,好的,我明白了。谢谢
  • @evolutionxbox 抱歉,但我认为这些都不能回答我的问题 :) 我都阅读了
【解决方案2】:
import { default as moment, Moment } from 'moment' 

应该也可以,这会让打字稿不开心吗?这样做有一段时间了。

【讨论】:

  • 有趣,那为什么import moment, { Moment } from 'moment' 不起作用?
  • 这样我仍然得到ESLint: Moment not found in 'moment'(import/named)
  • 很可能那一刻没有使用es模块。所以它没有名为 moment 的命名导出
  • @evolutionxbox 但import moment from 'moment' 不是命名导入,对吧? :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-05
  • 2016-09-18
  • 2017-09-26
  • 1970-01-01
  • 1970-01-01
  • 2019-03-31
  • 2020-08-15
相关资源
最近更新 更多