我试图将moment.js导入到我的angular2应用程序中。 首先,我已经按照guide进行了操作,我发现了answer,但即使我已经尝试按照提议的解决方案进行操作,我仍然无法导入时刻.js文件。 包存在,实际上我的IDE(visual studio)能够毫无问题地找到moment.d.ts文件,但是当我用npm start运行我的应用程序时,我在控制台中得到了这两个错误:
" NetworkError:404 Not Found - http://localhost:3000/node_modules/moment/" /node_m...moment/ 错误:patchProperty/desc.set/wrapFn@http://localhost:3000/node_modules/zone.js/dist/zone.js:769:27 Zonehttp://本地主机:3000 / node_modules / zone.js / DIST / zone.js:356:24 Zonehttp://本地主机:3000 / node_modules / zone.js / DIST / zone.js:256:29 ZoneTask/this.invoke@http://localhost:3000/node_modules/zone.js/dist/zone.js:423:29
加载http://localhost:3000/node_modules/moment时错误为"时刻"来自'我的文件'
我试图以这种方式导入片刻
import * as moment from 'moment'
以这种方式
import * as moment from 'moment/moment.d'
但没有,我仍然得到错误。我的SystemJs' map属性就是这个
var map = {
'app': 'app', // 'dist',
'@angular': 'node_modules/@angular',
'services': 'app/service',
'moment': 'node_modules/moment',//moment.js
'angular2-in-memory-web-api': 'node_modules/angular2-in-memory-web-api',
'rxjs': 'node_modules/rxjs'
};
如果我尝试使用打字安装,我会收到此错误:
"时刻"的打字已经存在于" node_modules / moment / moment.d.ts"中。您应该让TypeScript解析打包的打字并卸载由Typings
安装的副本
所以我卸载了它,并重新输入了命令,我得到了这个错误
打字ERR!消息无法找到"时刻" (" npm")在注册表中。
这样可以摆脱这种困境吗?
答案 0 :(得分:5)
首先,通过npm安装时刻包:
npm install moment --save
其次更改你的systemjs配置(2行):
(function (global) {
// map tells the System loader where to look for things
var map = {
'app': 'app', // 'dist',
'@angular': 'node_modules/@angular',
'angular2-in-memory-web-api': 'node_modules/angular2-in-memory-web-api',
'rxjs': 'node_modules/rxjs',
'moment': 'node_modules/moment', <== add this line
};
// packages tells the System loader how to load when no filename and/or no extension
var packages = {
'app': { main: 'main.js', defaultExtension: 'js' },
'rxjs': { defaultExtension: 'js' },
'angular2-in-memory-web-api': { main: 'index.js', defaultExtension: 'js' },
'moment': { main: 'moment.js', defaultExtension: 'js' } <== add this line
};
然后你可以使用它:
import * as moment from 'moment';
可从node_modules/moment/moment.d.ts