2016-09-29 3 views
6

Я следил за направляющими линиями в cli github page. Но я не могу заставить его работать в моем приложении.
Вот что я сделал:Добавить момент к угловому 2 (угловой кли)

  1. установлено момент: npm install moment --save
  2. установленного момент TS типизации: npm install @types/moment --save
  3. импортированы момент в одном из моих компонентов: 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 просто сделано проще. (Версия веб-пакета, а не 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

Изменение файла углового cli json и выполнение инструкции импорта скрипта ecma загрузит эту библиотеку дважды. подробности см. на этой странице https://github.com/angular/angular-cli/wiki/stories-global-scripts#using-global-libraries-inside-your-app – Ronnel

+0

@Ronnel Что вы ожидаете? Этот ответ 1 год. Но, это нужно смотреть, даже для этой плагиновой библиотеки. Это сумасшествие, которое они позволяли нам импортировать из глобального в ts, как это, но позволяя такой недостаток раскрываться. Я скоро дам ему игру и обновление. Спасибо – choz

1

Вам просто нужно включить, чтобы включить момент, используя синтаксис CommonJS, а не импорт. Попробуйте следующее:

let moment = require('moment'); 

Это потому, что момент не как модуль ES6 еще, и как таковой не будет работать с новой import синтаксиса.

UPDATE:

Когда я думаю об этом, я только использовал этот подход в моих модульных тестов. Использование его в вашем приложении может работать не так, потому что в этом подходе используется узла, который не может использоваться на стороне клиента.

Однако при использовании Moment в ваших компонентах вы можете использовать angular2-moment. Полные инструкции по установке можно найти на странице GitHub, но использование выглядит следующим образом:

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

Есть несколько других труб, которые можно использовать, которые все документированные на странице GitHub.

UPDATE 2:

По v2.10.0, Moment теперь поддерживает синтаксис ES6, так что вы должны быть в состоянии использовать любой синтаксис ES6 import вместо require.

+0

отличный ответ @Maloric. Работает на меня. Отлично. У меня есть вопрос, который необходимо уточнить. В чем разница между использованием let moment = require ('moment') vs import * в качестве момента с момента? С точки зрения производительности. https://medium.com/@jek.bao.choo/steps-to-add-moment-js-to-angular-cli-f9ab28e48bf0#.z9v3lhb6q –

+0

Я использовал требование, потому что в данный момент не был создан для ES6 (т.е. он не использовал экспорт). Я считаю, что он портирован на ES6 в 2.10.0, поэтому вы можете использовать импорт. Таким образом, помощники машинописных записей в вашей IDE по выбору должны подбирать предложения автозаполнения. Однако я не знаю, есть ли существенная разница в производительности. – Maloric

1

мне пришлось обновить свою версию консоли: 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 –