首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找不到模块'date-fns‘

找不到模块'date-fns‘
EN

Stack Overflow用户
提问于 2016-11-16 19:23:04
回答 4查看 37.1K关注 0票数 12

当我使用以下命令导入已安装的节点模块"date-fns“时

import { startOfDay } from 'date-fns';

然后我得到编译错误:

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

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

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

知道为什么会这样吗?

以下是我的安装日期-fns:

代码语言:javascript
复制
node_modules/date-fns/
├── start_of_day
│   ├── index.js
│   └── index.js.flow
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-11-16 19:43:54

尝试使用此方法,而不是先导入模块

在终端类型中

代码语言:javascript
复制
npm install date-fns @types/date-fns

然后在代码中

代码语言:javascript
复制
import * as startOfDay from "date-fns";
票数 19
EN

Stack Overflow用户

发布于 2017-02-21 12:20:19

如果您只想使用start_of_day函数,则应该遵循documentation

使用npm安装

代码语言:javascript
复制
npm install date-fns --save

或者用纱线:

代码语言:javascript
复制
yarn add date-fns

示例用法:

代码语言:javascript
复制
// 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

好处

选项1和2应该允许大多数构建工具轻松地只包含您实际使用的内容,从而使您的最终捆绑包更小,从而使您的web应用程序加载更快。考虑到你使用的是2.0.0-alpha.25或更高版本,Webpack 4和可能的其他查看添加到库中的sideffect标志的构建工具也将能够对选项3进行树形分解。

Date-fns通用模块化是目前我看到的"date-fns“与更流行和成熟的”时刻“相比的主要优势。尽管作者也解释了a github issue的其他优点。

不导入所有"date-fns“

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

因此,如果你真的想加载所有的函数,你应该将变量命名为"date-fns“。然而,考虑到易用性和好处,我不明白您为什么不遵循文档并导入单个函数。

类型定义

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

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

因此,您应该使用npm安装它,如下所示:

代码语言:javascript
复制
npm install @types/date-fns --save-dev

或者用纱线:

代码语言:javascript
复制
yarn add @types/date-fns --dev
票数 11
EN

Stack Overflow用户

发布于 2017-07-01 17:30:13

我应该说

代码语言:javascript
复制
import * as startOfDay from 'date-fns/startOfDay';

似乎我一直在用Angular Typescript代码做类似的事情。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40630893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档