找不到模块'date-fns'

Kum*_*rav 7 compiler-errors typescript angular

当我使用导入已安装的节点模块"date-fns"时

import { startOfDay } from 'date-fns';

然后我得到编译错误:

error TS2307: Cannot find module 'date-fns'.

但是,以下不会给出任何错误:

var startOfDay = require('date-fns');

知道为什么会这样吗?

以下是我安装的日期文件:

node_modules/date-fns/
??? start_of_day
?   ??? index.js
?   ??? index.js.flow
Run Code Online (Sandbox Code Playgroud)

Edw*_*ato 12

尝试使用此替代首先导入模块

在终端类型中

npm install date-fns @types/date-fns
Run Code Online (Sandbox Code Playgroud)

然后在代码中

import * as startOfDay from "date-fns";
Run Code Online (Sandbox Code Playgroud)


Kos*_*lun 7

如果您特别只想使用start_of_day函数,则应该遵循文档.

用npm安装

npm install date-fns --save
Run Code Online (Sandbox Code Playgroud)

或用纱线:

yarn add date-fns
Run Code Online (Sandbox Code Playgroud)

用法示例:

// option 1
var startOfDay = require('date-fns/start_of_day');

// option 2
// import * as startOfDay from 'date-fns/startOfDay';

// option 3 (only 2.0.0-alpha.25 or higher)
// import { startOfDay } from 'date-fns';

// The start of a day for 2 September 2014 11:55:00:
var result = startOfDay(new Date(2014, 8, 2, 11, 55, 0));
//=> Tue Sep 02 2014 00:00:00
Run Code Online (Sandbox Code Playgroud)

优点

选项1和2应该允许大多数构建工具轻松地仅包含您实际使用的内容,从而使您的最终捆绑更小,从而使您的Web应用程序加载速度稍快.Webpack 4和可能还有其他构建工具可以查看sideffect添加到库中的标志,也可以使用树木选项3,进一步假设您使用的是2.0.0-alpha.25或更高版本.

Date-fns一般模块化是目前我看到的"date-fns"与更受欢迎和已建立的"时刻"相比的主要优势.虽然作者还解释了github问题的其他优点.

不要导入所有"date-fns"

两个提到的工作解决方案都只是获取整个"date-fns"库,因此仍然是一个有效的语法,但将变量标记为"startOfDay"给人的印象是实际加载或使用的唯一部分是此函数.当所有其他功能也被徒劳地加载时.其中"start_of_day"只是加载在同一对象上的众多函数之一.

因此,如果您真的想要加载所有函数,则应该调用变量"date-fns".但是考虑到方便和好处,我不明白为什么你不会只是按照文档和导入个别功能.

类型定义

编辑:使用TypeScript 2+,您将直接从库中获取类型定义(版本1.23+).

早期版本(版本1.22.x及更低版本)应遵循Edwin Kato关于安装"date-fns"类型定义的建议.但是,您还应将其保存到"package.json"中的本地dev依赖项中.使用npm时,您需要明确说明这一点.使用纱线时,您需要声明它是一个开发依赖,而不是一个常规的依赖.

所以你应该用npm这样安装它:

npm install @types/date-fns --save-dev
Run Code Online (Sandbox Code Playgroud)

或用纱线:

yarn add @types/date-fns --dev
Run Code Online (Sandbox Code Playgroud)

  • 请注意,不建议使用安装date-fns的类型定义.该库提供了自己的类型定义 (2认同)