2016-09-29 31 views
6

Tôi đã theo các dòng guid tại cli github page. Nhưng tôi không thể làm cho nó hoạt động trong ứng dụng của tôi.
Dưới đây là những gì tôi đã làm:Thêm thời điểm vào góc 2 (góc cạnh)

  1. thời điểm cài đặt: npm install moment --save
  2. cài đặt thời điểm ts typings: npm install @types/moment --save
  3. thời điểm nhập khẩu thuộc một trong các thành phần của tôi: import * as moment from 'moment';

Tôi nhận được như sau lỗi: img http://image.prntscr.com/image/3a64732128ae49c1907e754ae056e879.png

A ny ý tưởng?

+0

Thực ra, tôi chỉ nhận ra rằng bạn đã làm điều tương tự như câu trả lời của tôi và vẫn bị lỗi này. Nếu có, phiên bản 'webpack' của bạn mà bạn đang chạy là gì? – choz

+0

Các bước để thêm Moment.js vào Angular-CLI https://medium.com/@jek.bao.choo/bước-to-add-moment-js-to-angular-cli-f9ab28e48bf0 –

Trả lời

12

Để cài đặt thư viện của bên thứ ba trong phiên bản mới nhất của angular-cli chỉ đơn giản hơn. (Phiên bản webpack, không phải là systemjs).

Đến bạn góc-cli.json trên gốc của dự án của bạn và cấu hình nó như thế nào,

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

Rồi cuối cùng, trong any.component.ts bạn bạn có thể nhập nó như thế này,

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

Tôi đã thêm thẻ tập lệnh như bạn đã đề xuất (xem: http://prntscr.com/cnv1xn) nhưng tôi vẫn giữ nguyên Sự cố – vlio20

+1

Sửa đổi tệp cli json góc cạnh và thực hiện câu lệnh nhập tập lệnh ecma sẽ tải lib đó hai lần. xem trang này để biết chi tiết https://github.com/angular/angular-cli/wiki/stories-global-scripts#using-global-libraries-inside-your-app – Ronnel

+0

@Ronnel Bạn mong đợi điều gì? Câu trả lời này là 1 tuổi. Nhưng, đó là điều cần phải xem xét, ngay cả đối với thư viện không có plugin này. Thật điên rồ, họ cho phép chúng tôi nhập khẩu nó từ toàn cầu vào các cơn bão như thế nhưng để lại một nhược điểm như vậy được phát hiện. Tôi sẽ cung cấp cho nó một vở kịch và cập nhật sớm. Cảm ơn – choz

1

Bạn chỉ cần bao gồm để bao gồm thời điểm sử dụng cú pháp CommonJS, thay vì nhập. Hãy thử như sau:

let moment = require('moment'); 

Điều này là do thời điểm không phải là mô-đun ES6 nêu ra, và như vậy sẽ không làm việc với các import cú pháp mới hơn.

UPDATE:

Khi tôi nghĩ về nó, tôi đã chỉ được sử dụng phương pháp này trong các bài kiểm tra đơn vị của tôi. Sử dụng nó trong ứng dụng của bạn có thể không hoạt động theo cùng một cách vì cách tiếp cận này sử dụng nút require của nút, không thể sử dụng phía máy khách.

Tuy nhiên, khi sử dụng Moment trong các thành phần của bạn, bạn có thể sử dụng angular2-moment. hướng dẫn đầy đủ thiết lập có thể được tìm thấy trên trang GitHub, nhưng việc sử dụng trông như thế này:

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

Có một vài ống khác mà bạn có thể sử dụng, tất cả được ghi nhận trên trang GitHub.

UPDATE 2:

Tính đến v2.10.0, Moment bây giờ hỗ trợ cú pháp ES6, vì vậy bạn sẽ có thể sử dụng bất kỳ cú pháp ES6 import thay vì require.

+0

câu trả lời tuyệt vời @Maloric. Làm việc cho tôi. Hoàn hảo. Tôi có một câu hỏi để làm rõ thêm. Sự khác nhau giữa việc sử dụng let moment = require ('moment') so với import * là thời điểm từ 'moment'? Xét về hiệu suất. https://medium.com/@jek.bao.choo/steps-to-add-moment-js-to-angular-cli-f9ab28e48bf0#.z9v3lhb6q –

+0

Tôi đã sử dụng yêu cầu vì tại thời điểm không được xây dựng cho ES6 (tức là nó không sử dụng xuất khẩu). Tôi tin rằng nó đã được chuyển đến ES6 trong 2.10.0, vì vậy bạn sẽ có thể sử dụng nhập khẩu. Bằng cách đó, những người trợ giúp về Typecript trong IDE của bạn lựa chọn nên nhận các đề xuất tự động điền. Tôi không biết nếu có một sự khác biệt đáng kể trong hiệu suất, mặc dù. – Maloric

1

tôi đã cập nhật phiên bản cli tôi: npm uninstall -g angular-cli @angular/cli npm cache clear npm install -g @angular/[email protected]

+0

Phiên bản mới nhất phải là: npm gỡ cài đặt -g @ angular/cli npm bộ nhớ cache rõ ràng npm install -g @ angular/cli –