我在VisualStudio中使用knockout开发Web应用程序。我刚刚通过bower安装了淘汰赛,包括项目中的d.ts文件,包含脚本到html页面,现在我可以访问ko
。
现在我尝试使用moment.js。与淘汰赛一样:安装,包括d.ts,包括脚本到页面,我收到错误cannot find name 'moment'
。添加对d.ts的引用没有帮助,import * as moment from 'moment'
收到错误can not find module moment
。
我知道这是一个愚蠢的问题,但我无法修复它。我做错了什么?
答案 0 :(得分:7)
在我的情况下,最后通过执行以下操作来解决此错误:
"allowSyntheticDefaultImports": true,
文件的compilerOptions
部分中添加此选项tsconfig.json
(已编辑:作为moment doc。sais在注意: If you have trouble importing moment, try add "allowSyntheticDefaultImports": true in compilerOptions in your tsconfig.json file.
)"moduleResolution": "node"
部分中添加compilerOptions
。 (发现这个选项环顾网络)import * as moment from 'moment';
答案 1 :(得分:6)
我建议使用一些工具来管理您的定义。一些流行的选择(你不需要两者,只需选择一个):
tsd
- npm i -g tsd
typings
- npm i -g typings
这些工作方式与包管理器类似。你可以安装你的定义,如npm / bower安装你的依赖项。
安装其中一个后,转到您的项目并安装时刻+其定义
npm install moment --save
其中一个:
tsd install moment --save
typings install moment --save --ambient
这两个都会创建一个包含你的定义的文件夹(都称之为打字),并且都有一个"伞"其中的定义文件,您应该在应用程序的入口点引用(首先是tsd,第二个是打字):
/// <reference path="typings/tsd.d.ts" />
/// <reference path="typings/index.d.ts" />
完成此操作后,您可以使用片刻(或任何其他模块):
import * as moment from 'moment'
moment.isDate("I'm not a date")
我建议查看以下内容:
https://github.com/DefinitelyTyped/tsd
https://github.com/typings/typings
答案 2 :(得分:6)
我今天有同样的错误。 解决方法是将package.json中的“ moment”包从“ 2.25.0”降级为“ 2.22.1”
我的应用程序是一个有角度的8版本和“打字稿”:“ 3.5.3
答案 3 :(得分:5)
对我来说,错误来自2.25.0版本。 目前的解决方法是降级到2.24.0。
时刻@ 2.25.0-package.json:
"typesVersions": {
">=3.1": {
"*": [
"ts3.1-typings/*"
]
}
}
但是文件夹“ ts3.1-typings”不存在。如果您的打字稿版本为3.1或更高版本,则会出现错误:
Cannot find module 'moment'
答案 4 :(得分:1)
这似乎解决了我的问题(此线程中的其他解决方案无效):
import * as moment from 'moment/moment.js';
我似乎仍然获得了正确的打字稿定义,甚至直接引用了js文件。我怀疑原因是node_modules下的'moment'文件夹没有index.js文件,但我不是打字稿打字/编译专家。
答案 5 :(得分:0)
尝试添加以下代码,它对我有用
import * as MomentD from "node_modules/moment/moment.d";
答案 6 :(得分:0)
您可以做到:
declare const moment: any;
导入后。
答案 7 :(得分:0)
我已修复它以在 tsconfig.app.json 文件中添加 "allowSyntheticDefaultImports": true 属性并删除 "angularCompilerOptions": { "enableIvy": false}。还在 package.json 中设置了依赖项 "moment": "^2.28.0", "ngx-daterangepicker-material": "4.0.1", "tslib": "^2.0.0",