我正在尝试开始使用angular 2 cli。
我想在我的项目中使用momentjs,下面是我所做的:
1.使用angular cli创建项目。
2.运行npm安装–保存时刻
3.从src文件夹运行typings init+typings安装--保存时刻
4.为系统模块添加力矩:
System.config({
套餐:{
应用程序:{
格式:'寄存器',
defaultExtension:'js'
},
时刻:{
映射:“node_modules/moment/moment.js”,
类型:“cjs”,
defaultExtension:'js'
}
}
});
- 从“时刻”添加了
import*作为时刻到我想要的组件 - 运行
ng发球并获得:
[DiffingTSCompiler]:Typescript发现以下错误:
app/angular-day-picker.ts(2,25):找不到模块“力矩”。
错误:[DiffingsCompiler]:Typescript发现以下错误:
app/angular-day-picker.ts(2,25):找不到模块“力矩”。
在DiffingTSCompiler.doFullBuild(/Users/vioffe/personal/angular day picker/node_modules/angular cli/lib/brocoli/brocoli typescript.js:202:29)
在diffingscompiler.rebuild(/Users/vioffe/personal/angular day picker/node_modules/angular cli/lib/brocoli/brocoli typescript.js:101:18)
在DiffingPluginWrapper.rebuild(/Users/vioffe/personal/angular day picker/node_modules/angular cli/lib/brocoli/diffing brocoli plugin.js:87:45)
at/Users/vioffe/personal/angular day picker/node_modules/angular cli/node_modules/angular cli/node_modules/brocoli/lib/api_compat.js:42:21
在lib$rsvp$$internal$$tryCatch(/Users/vioffe/personal/angular day picker/node_modules/angular cli/node_modules/angular cli/node_modules/rsvp/dist/rsvp.js:1036:16)
在lib$rsvp$$internal$$invokeCallback(/Users/vioffe/personal/angular day picker/node_modules/angular cli/node_modules/angular cli/node_modules/rsvp/dist/rsvp.js:1048:17)
at/Users/vioffe/personal/angular day picker/node_modules/angular cli/node_modules/angular cli/node_modules/rsvp/dist/rsvp.js:331:11
在lib$rsvp$asap$$flush(/Users/vioffe/personal/angular day picker/node_modules/angular cli/node_modules/angular cli/node_modules/rsvp/dist/rsvp.js:1198:9)
在doNTCallback0(node.js:430:9)
在进程中调用(node.js:359:13)
这是我的tsconfig.json文件:
{
“编译器选项”:{
“声明”:虚假,
“emit decoromentadata”:正确,
“实验生态学者”:没错,
“mapRoot”:“,
“模块”:“系统”,
“moduleResolution”:“节点”,
“noemiton”:没错,
“noImplicitAny”:错,
“rootDir”:“,
“源地图”:正确,
“sourceRoot”:“/”,
“目标”:“es5”
},
“文件”:[
“打字/主要d.T”
],
“排除”:[
“打字/浏览器.d.ts”,
“打字/浏览器”
]
}
我做错了什么?我在文档中找不到添加第三方LIB的指南
当包含第三方库时,有两部分。。。要执行的javascript代码,以及为IDE提供所有强类型特性的定义文件
显然,如果应用程序要运行,第一个必须存在。最简单的方法是在第三方库中加入<;脚本src=”https://stackoverflow.com/questions/35796961/thirdLib.js“>标记。这不会得到你的定义,因此你将没有IDE,但应用程序将发挥作用。(为了防止IDE抱怨它不知道变量'thirdLib',请将declare var thirdLib:any添加到ts文件中。因为它是any类型,IDE不会为thirdLib提供代码完成,但也不会抛出IDE错误。)
要获取正在执行的代码和定义,如果lib是用Typescript编写的,则可以使用import{thirdLib}从'thirdLibfolder/thirdLib'从代码中添加对该ts文件的引用。lib的ts文件本质上具有执行代码和类型脚本定义
如果lib不是用Typescript编写的,但是一些优秀的灵魂为它编写了一个thirdLib.d.ts定义文件,那么您可以使用/<;reference path=“thirdLibfolder/thirdLib.d.ts”/>在ts文件中。然后仍然包括实际执行的javascript和上面提到的脚本引用
这些文件的位置,以及是否在引用中包含扩展名,都特定于您的项目设置以及您正在使用的bundler和build工具。Webpack将搜索node\u modules文件夹以查找import{…中引用的库,并将接受扩展名为.ts且没有扩展名的引用。如果包含.ts扩展名,Meteor将抛出错误