2016-09-29 172 views
6

我遵循cli github page上的guid行。但是我無法使它在我的應用程序中工作。
這裏是我做過什麼:將角度添加到角度2(角度cli)

  1. 安裝的時刻:npm install moment --save
  2. 安裝時刻TS分型:npm install @types/moment --save
  3. 在我的組件之一
  4. 進口時刻:import * as moment from 'moment';

我正在以下錯誤: img http://image.prntscr.com/image/3a64732128ae49c1907e754ae056e879.png

A有什麼想法?

+0

其實,我只是意識到,你已經做了同樣的事情,我的答案,並仍然得到這個錯誤。如果是,你正在運行的是什麼「webpack」版本? – choz

+0

將Moment.js添加到Angular-CLI的步驟https://medium.com/@jek.bao。choo/steps-to-add-moment-js-to-angular-cli -f9ab28e48bf0 –

回答

12

要在angular-cli的最新版本中安裝第三方庫就簡單了。 (webpack版本,而不是systemjs之一)。

轉到您的角cli.json你的項目的根,並配置它一樣,

{ 
    ... 
    "apps": [ 
    ... 
    "scripts": [ 
     "../node_modules/moment/min/moment.min.js" 
    ] 
    ... 
    ] 
    ... 
} 

於是最後,在你的any.component.ts你可以導入像這樣,

import { Component, OnInit } from '@angular/core'; 
import * as moment from 'moment'; 

@Component({ 
    selector: '[id=home]', 
    templateUrl: './home.component.html', 
    styleUrls: ['./home.component.scss'] 
}) 
export class HomeComponent implements OnInit { 
    constructor() { } 

    ngOnInit() { 
     console.log('today is', moment()); 
    } 
} 
+0

我已經按照你的建議添加了腳本標記(看看:http://prntscr.com/cnv1xn),但我仍然有相同的問題 – vlio20

+1

修改angular cli json文件並執行ecma腳本導入語句將會加載該lib兩次。詳情見這個頁面https://github.com/angular/angular-cli/wiki/stories-global-scripts#using-global-libraries-inside-your-app – Ronnel

+0

@Ronnel你期望什麼?這個答案是1歲。但是,即使對於這個沒有插件的圖書館來說,這也是必須考慮的。他們讓我們把它從全球導入這樣的東西,但讓這樣的缺點暴露無遺。我會盡快發揮和更新。謝謝 – choz

1

你只需要包括使用CommonJS語法而不是導入。請嘗試以下操作:

let moment = require('moment'); 

這是因爲此刻是不是ES6模塊還沒有,因此不會與新import語法工作。

UPDATE:

當我想想,我只用這種方法在我的單元測試。在您的應用程序中使用它可能不會以相同的方式工作,因爲此方法使用節點的require,它不能用於客戶端。

但是,在組件中使用Moment時,可以使用angular2-moment。全部設置說明可以在GitHub的頁面上找到,但用法如下:

<div>today is {{ Date.now() | amDateFormat:'LL' }}</div> 

還有一些其他管道可以使用,這些都記錄了GitHub的頁面上。

更新2:

由於v2.10.0的,瞬間現在支持ES6語法,所以你應該能夠使用任何ES6 import語法而不是require

+0

偉大的答案@Maloric。適用於我。完善。我有一個問題需要進一步澄清。從「時刻」開始,使用let moment = require('moment')與import *之間的區別是什麼?在性能方面。 https://medium.com/@jek.bao.choo/steps-to-add-moment-js-to-angular-cli-f9ab28e48bf0#.z9v3lhb6q –

+0

我使用的要求,因爲在那個時刻沒有建立ES6(即它沒有使用導出)。我相信它是在2.10.0中移植到ES6的,所以你應該可以使用導入。這樣在您選擇的IDE中的Typescript助手應該選擇自動填充建議。不過,我不知道在性能上是否有顯着差異。 – Maloric

1

我不得不更新我的CLI版本: npm uninstall -g angular-cli @angular/cli npm cache clear npm install -g @angular/[email protected]

+0

最新版本應該是: npm uninstall -g @ angular/cli npm cache clear npm install -g @ angular/cli –