কৌণিক 2 টাইপ স্ক্রিপ্ট অ্যাপ্লিকেশনটিতে moment.js গ্রন্থাগারটি কীভাবে ব্যবহার করবেন?


231

আমি টাইপস্ক্রিপ্ট বাইন্ডিং সহ এটি ব্যবহার করার চেষ্টা করেছি:

npm install moment --save
typings install moment --ambient -- save

test.ts:

import {moment} from 'moment/moment';

এবং ছাড়া:

npm install moment --save

test.ts:

var moment = require('moment/moment');

কিন্তু যখন আমি moment.format () কল করি তখন আমি একটি ত্রুটি পাই। সহজ হওয়া উচিত, কেউ কি কমান্ড লাইন / আমদানির সংমিশ্রণ সরবরাহ করতে পারে যা কাজ করবে?


1
আপনার ত্রুটিটি ভাগ করুন দয়া করে
বাসারাত

1
যদি আমি moment.d.ts ইনস্টল করি এবং আমদানি ব্যবহার করি তবে আমি ... / টাইপিংস / ব্রাউজার / পরিবেশন / মুহূর্ত / moment.d.ts (9,21) এর মধ্যে সংকলন ত্রুটি পেয়েছি: ত্রুটি টিএস 2503: নেমস্পেসটি 'মুহুর্ত' খুঁজে পাচ্ছি না । এবং যদি আমি টাইপিং ইনস্টল না করে এবং প্রয়োজনীয় ব্যবহার না করি তবে আমি আনচাট টাইপ এরির পাই: moment.format কোনও ফাংশন নয়
সের্গেই আলদোখভ

এখানে অনেকগুলি পুরানো উত্তর রয়েছে। : দয়া করে এখানে দেখুন github.com/angular/angular-cli/wiki/...
Didia

3
Hinrich এর উত্তর (জুন 2017 হিসাবে) ng4 সঙ্গে আমার জন্য কাজ stackoverflow.com/a/43257938/1554495
ফিলে

সের্গেই আলদৌখভ কি এখনও এটিই সেরা উত্তর? নিশ্চয়ই @ হিরিচের কি?
জেনসন-বাটন-ইভেন্ট

উত্তর:


512

এপ্রিল 2017 আপডেট করুন:

সংস্করণ ২.১13.০ হিসাবে, মোমেন্টে একটি টাইপ স্ক্রিপ্ট সংজ্ঞা ফাইল অন্তর্ভুক্ত রয়েছে। https://momentjs.com/docs/#/use-it/typescript/

আপনার কনসোল প্রকারে, কেবল এনপিএম সহ এটি ইনস্টল করুন

npm install --save moment

এবং তারপরে আপনার কৌণিক অ্যাপ্লিকেশনটিতে, আমদানি এত সহজ easy

import * as moment from 'moment';

এটাই, আপনি সম্পূর্ণ টাইপসক্রিপ্ট সমর্থন পান!

বোনাস সম্পাদনা:Moment টাইপস্ক্রিপ্টের মতো কোনও চলক বা সম্পত্তি টাইপ করতে আপনি এটি করতে পারেন যেমন:

let myMoment: moment.Moment = moment("someDate");

1
আপনার অ্যাপ্লিকেশনটিতে এটি যুক্ত করা কি গুরুত্বপূর্ণ? মডিউল ফাইল এবং আমদানি অ্যারে? অথবা আপনি কেবল কোনও উপাদানগুলির মধ্যে এটি আমদানি করে ব্যবহার করতে পারেন?
ক্যাথরিন আর

3
@ ক্যাথরিন আর আপনি যে কোনও ফাইলে এটি ব্যবহার করতে পারেন, এটি কৌনিক নির্দিষ্ট নয়।
হিনিরিচ

এখন, মুহুর্তের মতো প্লাগইনগুলির কী হবে?
গ্রেওয়াইয়ার

2
আসলে এই উত্তরটি কৌনিক নির্দিষ্ট নয়, এটি যে কোনও টাইপসক্রিপ্ট প্রকল্পের জন্য প্রযোজ্য।
হিনরিচ

দুর্দান্ত, এবং আমি কীভাবে টেমপ্লেটে পাইপ ব্যবহার করব?
ভ্লাদানপ্রো

98

momentএকটি তৃতীয় পক্ষের বৈশ্বিক সম্পদ। মুহুর্তের অবজেক্টটি windowব্রাউজারে থাকে। এর জন্য importএটি আপনার কৌনিক 2 অ্যাপ্লিকেশনটিতে এটি সঠিক নয় । পরিবর্তে <script>আপনার HTML এ ট্যাগ অন্তর্ভুক্ত করুন যা moment.js ফাইলটি লোড করবে।

টাইপস্ক্রিপ্টকে খুশি করতে আপনি যুক্ত করতে পারেন

declare var moment: any;

আপনার ফাইলগুলির শীর্ষে যেখানে আপনি এটি সংকলন ত্রুটিগুলি থামাতে ব্যবহার করেন বা আপনি ব্যবহার করতে পারেন

///<reference path="./path/to/moment.d.ts" />

বা টাইপস্ক্রিপ্ট এর নিজস্বটিতে খুঁজে পেতে পারে এমন moment.d.ts ফাইল ইনস্টল করতে টিএসডি ব্যবহার করুন।

উদাহরণ

import {Component} from 'angular2/core';
declare var moment: any;

@Component({
    selector: 'example',
    template: '<h1>Today is {{today}}</h1>'
})
export class ExampleComponent{
    today: string = moment().format('D MMM YYYY');
}

আপনার এইচটিএমএল বা মুহুর্তের মধ্যে স্ক্রিপ্ট ট্যাগ যুক্ত করার বিষয়ে নিশ্চিত হন।

<script src="node_modules/moment/moment.js" />

মডিউল লোড হচ্ছে moment

প্রথমে আপনার মডিউল লোডার যেমন System.js সেট করতে হবে মুহুর্তের সাধারণ ফাইলগুলি লোড করতে

System.config({
    ...
    packages: {
        moment: {
            map: 'node_modules/moment/moment.js',
            type: 'cjs',
            defaultExtension: 'js'
        }
    }
});

তারপরে ফাইলটি যেখানে প্রয়োজন সেখানে মুহুর্তটি আমদানি করতে

import * as moment from 'moment';

অথবা

import moment = require('moment');

সম্পাদনা করুন:

ওয়েবপ্যাক বা সিস্টেমজেএস বিল্ডার বা ব্রাউজারফাইয়ের মতো কিছু বান্ডিলারের সাথে অপশন রয়েছে যা উইন্ডো অবজেক্ট থেকে মুহুর্তকে দূরে রাখবে। এ সম্পর্কিত আরও তথ্যের জন্য, দয়া করে নির্দেশের জন্য তাদের নিজ নিজ ওয়েবসাইট দেখুন visit


3
এটি সম্ভব, তবে এটি অত্যন্ত দীর্ঘ কারণ আপনার কোনও মডিউল লোডার যেমন Systemমুহূর্তের জেনারেল নোড সংস্করণে লোডের প্রয়োজন হবে এবং তারপরে আপনি এটির সাথে উল্লেখ করতে সক্ষম হবেন import * as moment from 'moment';বা import moment = require('moment');যা সমস্ত উদ্দেশ্য এবং উদ্দেশ্যগুলির জন্য অভিন্ন, তবে আপনার কাছে টাইপস্ক্রিপ্ট কিছু সূক্ষ্ম পার্থক্য।
SnareChops

@ স্নারেচপস সংজ্ঞা ফাইলটি নীচে টেনে নিচ্ছে typings install moment --ambient -- saveনা typingsএবং রেফারেন্সটি তৈরি করে ///<reference path="./path/to/moment.d.ts" />? দৌড়ানোর সময় আমার একই ত্রুটি হচ্ছেnpm run tsc
শান নর্থ্রপ

এটি বিভ্রান্তিকর; importইঙ্গিত মুহুর্তে কিছু ভুল নেই ।
স্টিগ্লগার

2
এই উত্তরটি অসম্পূর্ণ কারণ মুহুর্তের সংজ্ঞাটি পরিচালনা করতে আপনাকে টাইপিংস ব্যবহার করতে হবে। এছাড়াও, এটি কোনও কিছু আমদানি করার প্রয়োজন নেই। দয়া করে, আমার উত্তর নম্র দেখুন
বার্নার্ডো পাচেকো

8
এই উত্তরটি বিভ্রান্তিমূলক, মুহূর্তটি বিশ্বব্যাপী পরিবর্তনশীল হওয়ার অর্থ এটি আপনাকে স্ক্রিপ্ট ট্যাগ হিসাবে লোড করার "কাছে" নয় have আপনি যদি কোনও ধরণের বান্ডলার (ওয়েবপ্যাক) ব্যবহার করেন তবে আপনি এটি কোনও বিক্রেতার ফাইলে বান্ডিল করতে পারেন এবং করা উচিত। আপনি যদি ওয়েবপ্যাক এবং সঠিক লোডার ব্যবহার করেন তবে আপনি বিশ্বব্যাপী অ্যাসাইনমেন্টটিও কার্যকর করতে পারবেন।
Shlomi Assaf

49

নিম্নলিখিত আমার জন্য কাজ করে।

প্রথমে মুহুর্তের জন্য টাইপ সংজ্ঞা ইনস্টল করুন।

typings install moment --save

(দ্রষ্টব্য: নয় --ambient)

তারপরে, সঠিক রফতানির অভাব ঘটাতে:

import * as moment from 'moment';

2
import moment from "moment";এটি কাজ করতে পরিবর্তে আমাকে করতে হয়েছিল।
এথেরিক্স

3
এই উত্তরটি অসম্পূর্ণ কারণ আপনার কোনও কিছু আমদানির দরকার নেই। দয়া করে, আমার উত্তর নম্র দেখুন
বার্নার্ডো পাচেকো

1
এছাড়াও আয়নিক 2 বিটা / কৌণিক 2 আরসি-এর প্রতিটি পুনরাবৃত্তি জিনিসগুলি আমদানির একটি নতুন উপায় এনেছে বলে মনে হচ্ছে আপনাকে এই পরামর্শগুলির কয়েকটি চেষ্টা করতে হবে যদিও এক দফা সেগুলি একবার উত্তর
পূর্বের

import * as moment from 'moment';চাবিকাঠি
নিমা

আমি রেজিস্ট্রিতে "মুহুর্ত" ("এনপিএম") সন্ধান করতে অক্ষম। যখন আমি সংজ্ঞাগুলি ইনস্টল করার চেষ্টা করি, দয়া করে সহায়তা করুন
সেবাস্তিয়ান রোজাস

28

আমি নিম্নলিখিত সঙ্গে যেতে হবে:

npm install moment --save

আপনার systemjs.config.jsফাইলের mapঅ্যারে যুক্ত করুন:

'moment': 'node_modules/moment'

থেকে packagesঅ্যারের অ্যাড:

'moment': { defaultExtension: 'js' }

আপনার উপাদানগুলিতে। ব্যবহার করুন: import * as moment from 'moment/moment';

এবং এটাই. আপনি আপনার উপাদানগুলির শ্রেণি থেকে ব্যবহার করতে পারেন:

today: string = moment().format('D MMM YYYY');


25

আমরা এখন মডিউল ব্যবহার করছি,

চেষ্টা import {MomentModule} from 'angular2-moment/moment.module';

পরে npm install angular2-moment

http://ngmodules.org/modules/angular2-moment


76
এটি অপর্যাপ্ত, কারণ এটি কেবল পাইপ ইনস্টল করে। স্পষ্টতই, আপনি আপনার মডিউলগুলিতে এই মুহুর্তের তারিখগুলি নিয়ে কাজ করতে পারবেন না।
ntaso

1
উপাদান শ্রেণিতে কৌণিক 2-মুহুর্তের ফিল্টার কীভাবে ব্যবহার করবেন সে সম্পর্কে কিছু টিপস পছন্দ করবে
ট্রিকপট্টি

3
এটি হওয়া উচিত: 'কৌণিক 2-মুহুর্ত / moment.module' থেকে 'মোমেন্টমোডুল}' আমদানি করুন;
ইয়াসার

1
এটি আর নির্বাচিত উত্তর হওয়া উচিত নয়। @ হিনরিচের উত্তরটি একবার দেখুন। npm install moment --save, npm install @types/moment --save Stackoverflow.com/questions/35166168/...
jamesjansson

মোড়ক স্থাপনের পরিবর্তে এটি হওয়া উচিতimport * as moment from 'moment';
এম আতিফ রিয়াজ

22

এটি কোনও Typescriptপ্রকল্পে ব্যবহার করতে আপনাকে মুহুর্তটি ইনস্টল করতে হবে:

npm install moment --save

মুহুর্ত ইনস্টল করার পরে, আপনি এটিকে .tsআমদানি করার পরে যে কোনও ফাইলে এটি ব্যবহার করতে পারেন :

import * as moment from "moment";


1
দ্রষ্টব্য ** @ প্রকারের / মুহুর্ত @ 2.13.0: এটি মুহুর্তের জন্য একটি স্টাব ধরণের সংজ্ঞা ( github.com/moment/moment )। মুহুর্তটি তার নিজস্ব ধরণের সংজ্ঞা দেয়, সুতরাং আপনার @ টাইপ / মুহুর্ত ইনস্টল করার প্রয়োজন নেই!
উইনেমুকা

1
গ্রেট! এখানে সরকারী রেফারেন্স: momentjs.com/docs/#/use-it/typescript
Andrea

14

--- আপডেট 11/01/2017

টাইপগুলি এখন হ্রাস করা হয়েছে এবং এটি এনপিএম @ টাইপ দ্বারা প্রতিস্থাপিত হয়েছিল । এখন থেকে প্রকারের ঘোষণা পাওয়ার জন্য এনপিএম ছাড়া কোনও সরঞ্জামের প্রয়োজন হবে না। মোমেন্ট ব্যবহার করার জন্য আপনাকে @ টাইপগুলির মাধ্যমে টাইপ সংজ্ঞা ইনস্টল করতে হবে না কারণ মোমেন্ট ইতিমধ্যে তার নিজস্ব ধরণের সংজ্ঞা প্রদান করে।

সুতরাং, এটি কমে মাত্র 3 ধাপে:

1 - ইনস্টল মুহুর্তে টাইপ সংজ্ঞা রয়েছে:

npm install moment --save

2 - আপনার এইচটিএমএল ফাইলটিতে স্ক্রিপ্ট ট্যাগ যুক্ত করুন:

<script src="node_modules/moment/moment.js" />

3 - এখন আপনি এটি ব্যবহার করতে পারেন। সময়কাল।

today: string = moment().format('D MMM YYYY');

--- আসল উত্তর

এটি মাত্র 3 ধাপে করা যেতে পারে:

1 - ইনস্টল মুহুর্ত সংজ্ঞা - * .d.ts ফাইল:

typings install --save --global dt~moment dt~moment-node

2 - আপনার এইচটিএমএল ফাইলটিতে স্ক্রিপ্ট ট্যাগ যুক্ত করুন:

<script src="node_modules/moment/moment.js" />

3 - এখন আপনি এটি ব্যবহার করতে পারেন। সময়কাল।

today: string = moment().format('D MMM YYYY');

টাইপিং সংস্করণটি যে dt এ উপলব্ধ তা নিয়ে আমার সমস্যা হচ্ছে। এটি মুহুর্তের একটি পুরানো সংস্করণ ব্যবহার করছে যা আমি ব্যবহার করতে চাইছি নতুন পদ্ধতি নেই। যদি আমি তাদের দ্বারা প্রস্তাবিত ( momentjs.com/docs/#/use-it/system-js ) অ্যাপ্লিকেশন সংকলন করি তবে ব্রাউজারে লোড হয় না। আমি প্রায় একটি মৃত প্রান্তে পৌঁছে যাচ্ছি ...
ফ্যাব্রিকিও

আমি কৌনিক ক্লাইমে কাজ করার জন্য স্ক্রিপ্ট ট্যাগটি পাইনি। যদিও আমদানি চেয়ে আরো ইন্দ্রিয় তোলে
Winnemucca,

@ বার্নার্ডো আমি আপনার পদক্ষেপগুলি অনুসরণ করার চেষ্টা করেছি এবং moment.js ইনস্টল করেছি। পরে declare var moment;অবশ্য typings আমার জন্য কাজ করছে না। moment().কোনও ইন্টেলিজেন্স টাইপ করার পরে । আমার ধারণা আমি এখানে কয়েক ধাপ মিস করছি।
শ্যামল পরীখ 25'17

খুব নিশ্চিত যে এটি কাজ করে না, ওয়েব প্যাক কীভাবে এটি বিল্ড নোড মডিউলগুলির সাথে অন্তর্ভুক্ত করতে জানে?
জননি 5

12

জন্য কৌণিক 7+ (সমর্থন 8 এবং 9 এছাড়াও) :

1: আদেশ দ্বারা মুহুর্ত ইনস্টল npm install moment --save

2: এর মধ্যে কিছু যুক্ত করবেন না app.module.ts

3: কেবল আপনার componentবা অন্য কোনও ফাইলের শীর্ষে আমদানি বিবৃতি যুক্ত করুন :import * as moment from 'moment';

4: এখন আপনি momentআপনার কোডের যে কোনও জায়গায় ব্যবহার করতে পারেন । ঠিক যেমন:

myDate = moment(someDate).format('MM/DD/YYYY HH:mm');


আমাকে এই জাতীয় আমদানি করতে import * as moment_ from 'moment'; const moment = moment_;হয়েছিল : অন্যথায় আমি পাচ্ছিলামError: Cannot call a namespace ('moment')
স্নুক

শুনতে খুব অদ্ভুত। moment_শুধু একটি আক্ষরিক নাম। এটি যে কোনও কিছু হতে পারে, আমি মনে করি ...
রহমত আলী

1
কেবল সচেতন থাকুন যে import * as moment from 'moment';বান্ডিলটির আকার 500kb ডলার বাড়িয়ে দিন। সেখানে একটি ভাল নিবন্ধ একটি সমাধান সঙ্গে সমস্যা ব্যাখ্যা হয় medium.jonasbandi.net/...
Kosmonaft

9

এনজিবি সিএলআই সহ

> npm install moment --save

app.module এ

import * as moment from 'moment';

providers: [{ provide: 'moment', useValue: moment }]

উপাদান মধ্যে

constructor(@Inject('moment') private moment)

এইভাবে আপনি একবার মুহুর্তটি আমদানি করুন

কৌনিক => 5 আপডেট করুন

{
   provide: 'moment', useFactory: (): any => moment
}

আমার জন্য আওট এবং সর্বজনীন সাথে প্রোডে কাজ করে

আমি মুহুর্তের চেয়ে কোনওটি ব্যবহার করা পছন্দ করি না ome মুহুর্তটি আমি পেয়েছি

Error   Typescript  Type 'typeof moment' is not assignable to type 'Moment'. Property 'format' is missing in type 'typeof moment'.

আমি Parameter 'moment' implicitly has an 'any' typeত্রুটি পাই
আজিমুথ

এটি কি প্রোড মোডে আপনার জন্য কাজ করে? এটি ডেভ মোডে দুর্দান্ত কাজ করছিল, তবে আমি যখন আমার অ্যাপ্লিকেশনটি মোডে চালিত করি তখন এটি ব্যর্থ হয়। আমার অ্যাপ্লিকেশনটিতে অলস লোডযুক্ত মডিউলগুলিও রয়েছে (কেবল এটির ক্ষেত্রে)। মুহুর্তটি নাল হয়ে শেষ হয়।
jbgarr

@jbgarr আমি নির্মাণকারীর মতো একটি অলস মডিউলে চেষ্টা করেছি (@ ইনজেক্ট ('মুহূর্ত') ব্যক্তিগত মুহুর্ত) {কনসোল.লগ ('তারিখ', মুহূর্ত ());
problems

8

কৌণিক 2-মুহুর্তের লাইব্রেরিতে {{মাইডেট | এর মতো পাইপ রয়েছে html ফাইলগুলিতে ব্যবহার করতে amTimeAgo}।।

সেই একই পাইপগুলিকে কোনও উপাদান বর্গ (.ts) ফাইলের মধ্যে টাইপস্ক্রিপ্ট ফাংশন হিসাবে অ্যাক্সেস করা যায়। নির্দেশিকা অনুসারে প্রথমে পাঠাগারটি ইনস্টল করুন:

npm install --save angular2-moment

নোড_মডিউলগুলিতে / কৌণিক 2-মুহুর্তে এখন ".pipe.d.ts" ফাইল যেমন ক্যালেন্ডার.পাইপ.ড.টিস , তারিখ-ফর্ম্যাট.পিপ.ডি.এসটি এবং আরও অনেক কিছু হবে।

যারা প্রতিটি উদাহরণস্বরূপ, সমতুল্য নল জন্য টাইপ করা বিষয় ফাংশনের নাম রয়েছে, DateFormatPipe () জন্য ফাংশন amDateFormatPipe

আপনার প্রকল্পে ডেটফর্ম্যাট পাইপ ব্যবহার করতে , আমদানি করুন এবং এটিকে আপনার গ্লোবাল সরবরাহকারীগুলিতে app.module.ts এ যুক্ত করুন:

import { DateFormatPipe } from "angular2-moment";
.....
providers: [{provide: ErrorHandler, useClass: IonicErrorHandler}, ...., DateFormatPipe]

তারপরে আপনি যে কোনও উপাদানটিতে ফাংশনটি ব্যবহার করতে চান সেখানে এটি শীর্ষে আমদানি করুন, কনস্ট্রাক্টারে ইনজেকশন দিন এবং ব্যবহার করুন:

import { DateFormatPipe } from "angular2-moment";
....
constructor(.......,  public dfp: DateFormatPipe) {
    let raw = new Date(2015, 1, 12);
    this.formattedDate = dfp.transform(raw, 'D MMM YYYY');
}

যে কোনও ফাংশন ব্যবহার করতে এই প্রক্রিয়াটি অনুসরণ করুন। সমস্ত ফাংশনে অ্যাক্সেস পাওয়ার জন্য যদি একটি উপায় থাকে তবে এটি চমৎকার হবে তবে উপরের সমাধানগুলির কোনওটিই আমার পক্ষে কার্যকর হয়নি।


এই দুর্দান্ত ধন্যবাদ! কৌনিক 2 মুহুর্তের জন্য সর্বত্র আপনাকে কেবলমাত্র টেমপ্লেটে কীভাবে এটি ব্যবহার করবেন তা আপনাকে দেখায়। আপনার অত্যন্ত সহায়ক পোস্টটি আমাকে দেখিয়েছে যে কীভাবে এটি টেমপ্লেটে আউটপুট দেওয়ার আগে মানটি ব্যবহার করতে হয় তা ব্যবহার করতে।
অ্যান্ড্রু জুনিয়র হাওয়ার্ড

@ রায়য়াপ্পা আমি পাইপস মডিউলটি ব্যবহার করে কিছুকে টাইপস্ক্রিপ্টে অ্যাক্সেস করার জন্য কিছু মুহুর্ত ব্যবহার করছি। আমি বুঝতে পেরেছি আপনি বলছেন যে আপনি পাইপ সংস্করণ টাইপস্ক্রিপ্টে ব্যবহার করতে পারেন তবে উভয় ইনস্টল করার ক্ষেত্রে ক্ষতি কী হবে?
জ্যাক

5

যদি আপনি আরও তৃতীয় পক্ষের প্যাকেজ যুক্ত করে থাকেন তবে আমি কৌণিক 2-মুহুর্তের লাইব্রেরিটি ব্যবহার করেছি । ইনস্টলেশনটি বেশ সোজা ছিল এবং আপনার README এর সর্বশেষ নির্দেশাবলী অনুসরণ করা উচিত। এর ফলস্বরূপ আমি টাইপগুলিও ইনস্টল করেছি

আমার জন্য কবজির মতো কাজ করেছেন এবং এটিকে কাজ করার জন্য সবেমাত্র কোনও কোড যুক্ত করেছেন।


5

এটি এখনও মানুষের জন্য সমস্যা কিনা তা নিশ্চিত নয় ... তবে সিস্টেমজেএস এবং মোমেন্টজএস গ্রন্থাগার হিসাবে ব্যবহার করে, এটি আমার জন্য এটি সমাধান করেছে

/*
 * Import Custom Components
 */
import * as moment from 'moment/moment'; // please use path to moment.js file, extension is set in system.config

// under systemjs, moment is actually exported as the default export, so we account for that
const momentConstructor: (value?: any) => moment.Moment = (<any>moment).default || moment;

আমার জন্য সেখান থেকে ভাল কাজ করে।


5

কৌনিক 2 আরসি 5 এর জন্য এটি আমার পক্ষে কাজ করেছিল ...

প্রথম এনপিএম মাধ্যমে মুহূর্ত ইনস্টল

npm install moment --save

তারপরে আপনি যে উপাদানটি এটি ব্যবহার করতে চান তার মধ্যে মুহুর্তটি আমদানি করুন

import * as moment from 'moment';

সর্বশেষে systemjs.config.js "মানচিত্র" এবং "প্যাকেজগুলি" এ মুহুর্তটি কনফিগার করুন

// map tells the System loader where to look for things
  var map = {
  ....
  'moment':                     'node_modules/moment'
  };
  // packages tells the System loader how to load when no filename and/or no extension
  var packages = {
    ...
    'moment':                       { main:'moment', defaultExtension: 'js'}
  };

ওয়েবপ্যাকের সমতুল্য পদক্ষেপটি কী সম্পর্কে কোনও ধারণা?
ভারত জিলেদা

@ ভরটগেলাদা ওয়েবপ্যাক দিয়ে কিছু করার দরকার নেই। কৌণিক 2 এবং কৌণিক-ক্লিপ ব্যবহার করে আমাকে কেবল এনটিএম ইনস্টল করে আমদানি করতে হয়েছিল। মুহুর্তের শেষ সংস্করণ টাইপস্ক্রিপ্ট সমর্থন করে আমার কোনও টাইপিংয়ের দরকার নেই।
স্ট্যানিস্লাসড্রিগ মনিকা

1
একমাত্র সমাধান যা আমাকে আরেকটি স্থানীয় আমদানি করিয়েছে: import 'moment/locale/de.js';ধন্যবাদ!
আইবাফ

4

SnareChop এর উত্তর ছাড়াও, আমাকে মুহুর্তের জন্য টাইপিং ফাইলটি পরিবর্তন করতে হয়েছিল।

ইন moment-node.d.tsআমি প্রতিস্থাপিত:

export = moment;

সঙ্গে

export default moment;


4

কৌণিক মধ্যে মোমেন্ট ব্যবহার করার নিজস্ব সংস্করণ version

npm i moment --save

import * as _moment from 'moment';

...

moment: _moment.Moment = _moment();

constructor() { }

ngOnInit() {

    const unix = this.moment.format('X');
    console.log(unix);    

}

প্রথম হিসাবে আমদানি মুহুর্ত _moment, তারপরে প্রাথমিক মান momentসহ প্রকারের _moment.Momentসাথে ভেরিয়েবল ঘোষণা করুন _moment()

মুহুর্তের সরল আমদানি আপনাকে কোনও স্বয়ংক্রিয় সমাপ্তি দেবে না তবে আপনি যদি প্যাকেজ Momentথেকে _momentনেমস্পেস থেকে টাইপ ইন্টারফেসের সাথে মুহুর্ত ঘোষণা 'moment'করেন তবে মুহুর্তের নাম স্পেসের সাথে শুরু করা হবে_moment() স্বয়ংক্রিয়তা আপনাকে দেয় gives

@types typingsআপনি যদি মুহুর্তের মতো ভ্যানিলা জাভাস্ক্রিপ্ট লাইব্রেরির জন্য স্বয়ংক্রিয় সমাপ্তি খুঁজছেন তবে আমি মনে করি এটি কৌতুক সরবরাহকারী ব্যবহার না করেই মুহূর্তটি ব্যবহার করার সবচেয়ে কৌণিক উপায় ।


ধরণের ইনস্টল করার ফলে আপনি স্বতঃপূরণ অ্যাক্সেস করতে পারবেন:npm install @types/moment --save
জেমসজনসন

3

"allowSyntheticDefaultImports": trueআপনার যুক্ত করার চেষ্টা করুনtsconfig.json

পতাকা কি করে?

এটি মূলত টাইপস্ক্রিপ্ট সংকলককে বলে যে কোনও ES6 আমদানি বিবৃতি ব্যবহার করা ঠিক আছে, যেমন

import * as moment from 'moment/moment';

মোমেন্ট.জেএস এর মতো একটি কমনজেএস মডিউলে যা কোনও ডিফল্ট রফতানি ঘোষণা করে না। পতাকাটি কেবল প্রকারের কোড নয়, প্রকারের চেকিংয়ে প্রভাবিত করে।

আপনি যদি মডিউল লোডার হিসাবে সিস্টেমজেএস ব্যবহার করেন তবে এটি প্রয়োজনীয়। আপনি যদি আপনার টিএস সংকলকটি বলেন যে আপনি সিস্টেমজেএস ব্যবহার করেন তবে পতাকাটি স্বয়ংক্রিয়ভাবে চালু হবে:

"module": "system"

এটি আইডিইগুলির দ্বারা ছুঁড়ে ফেলা কোনও ত্রুটিও মুছে ফেলবে যদি সেগুলি ব্যবহারের জন্য কনফিগার করা থাকে tsconfig.json


2

সিস্টেমজ এবং জেএসপিএম সহ কৌনিক 2 এর জন্য:

import * as moment_ from 'moment';
export const moment =  moment_["default"];

var a = moment.now();
var b = moment().format('dddd');
var c = moment().startOf('day').fromNow();

2

আঙ্গুলের সিএলআই ব্যবহারকারীদের জন্য

বাহ্যিক গ্রন্থাগারগুলি এখানে ডকুমেন্টেশনে রয়েছে:

https://github.com/angular/angular-cli/wiki/stories-third-party-lib

এর মাধ্যমে আপনার লাইব্রেরিটি কেবল ইনস্টল করুন

এনপিএম লিব নাম ইনস্টল করুন - সংরক্ষণ করুন

এবং এটি আপনার কোডে আমদানি করুন। লাইব্রেরিতে যদি টাইপগুলি অন্তর্ভুক্ত না থাকে তবে আপনি সেগুলি ব্যবহার করে এটি ইনস্টল করতে পারেন:

এনপিএম লিব নাম ইনস্টল করুন - সংরক্ষণ করুন

এনএমপি ইনস্টল করুন @ প্রকারের / lib-name --save-dev

তারপরে src / tsconfig.app.json খুলুন এবং এ্যারে টাইপ করুন অ্যারে:

"প্রকারগুলি": ["লিবি-নাম"]

আপনি যে লাইব্রেরির জন্য টাইপগুলি যুক্ত করেছেন তা যদি কেবল আপনার e2e পরীক্ষায় ব্যবহার করা হয় তবে পরিবর্তে e2e / tsconfig.e2e.json ব্যবহার করুন। একই ইউনিট পরীক্ষা এবং src / tsconfig.spec.json জন্য।

লাইব্রেরিতে যদি @ টাইপ / এ টাইপিং উপলব্ধ না থাকে তবে আপনি নিজে নিজে এটির জন্য টাইপগুলি যুক্ত করে এটি ব্যবহার করতে পারেন:

প্রথমে আপনার এসআরসি / ফোল্ডারে একটি টাইপিং.ড.টি.এস ফাইল তৈরি করুন।

এই ফাইলটি স্বয়ংক্রিয়ভাবে বৈশ্বিক ধরণের সংজ্ঞা হিসাবে অন্তর্ভুক্ত হবে। তারপরে, src / typings.d.ts এ নিম্নলিখিত কোড যুক্ত করুন:

মডিউল 'টাইপলেস-প্যাকেজ' ঘোষণা করুন;

অবশেষে, উপাদান বা ফাইল যা লাইব্রেরি ব্যবহার করে, নিম্নলিখিত কোড যুক্ত করুন:

'টাইপলেস-প্যাকেজ' থেকে টাইপলেস প্যাকেজ হিসাবে আমদানি করুন; typelessPackage.method ();

সম্পন্ন. দ্রষ্টব্য: আপনি যে লাইব্রেরিটি ব্যবহার করার চেষ্টা করছেন তার জন্য আরও টাইপিং সংজ্ঞায়িত করতে আপনার প্রয়োজন হতে পারে বা দরকারী খুঁজে পেতে পারেন।


আপনার ধাপে ধাপে নির্দেশাবলীর প্রয়োজন হলে এই নিবন্ধটি চেকআউট করুন। medium.com/@jek.bao.choo/...
wag0325

1

আমি সিস্টেমটি ব্যবহার করে সাইনথ্যাটিক ডিফল্ট ইম্পোর্টগুলি (যেহেতু আমার জন্য ব্যবহারের মুহুর্ত থেকে কোনও রফতানি নেই) অনুমতি দেওয়ার পরামর্শ অনুসরণ করেছি। তারপরে আমি কারওর ব্যবহারের পরামর্শ অনুসরণ করেছি:

import moment from 'moment';

মুহুর্তের সাথে আমার system.js কনফিগারেশনে ম্যাপ করা হচ্ছে। অন্যান্য আমদানির বিবৃতিগুলি কোনও কারণে আমার পক্ষে কার্যকর হবে না


এটি এখনই শেষ উত্তর, তবে কেবলমাত্র এটিই কাজ করছে!
টিজেএল

1

নিম্নলিখিত আমার জন্য কাজ করেছে:

typings install dt~moment-node --save --global

টাইপিং সংগ্রহস্থলগুলিতে মুহূর্ত নোড বিদ্যমান নেই। উপসর্গটি dt ব্যবহার করে এটির কাজ করতে আপনাকে অবশ্যই সংজ্ঞায়িত টাইপে পুনর্নির্দেশ করতে হবে।


1

সিস্টেমজগুলি দিয়ে আমি যা করেছি তা হ'ল আমার সিস্টেমে js.config এর জন্য আমি ম্যাপ যুক্ত করেছি added moment

map: {
   .....,
   'moment': 'node_modules/moment/moment.js',
   .....
}

এবং তারপরে আপনি momentকেবলমাত্র করে সহজেই আমদানি করতে পারবেন

import * as moment from 'moment'

1

আমি জানি এটি একটি পুরানো থ্রেড, তবে আমার জন্য আসলে সবচেয়ে সহজ সমাধানটি হ'ল:

  1. প্রথমে এটি ইনস্টল করা হচ্ছে npm install moment --save
  2. আমার উপাদানগুলিতে নোড_মডিউলগুলি থেকে এটি প্রয়োজনীয় এবং এটি ব্যবহার করুন:
const moment = require('../../../node_modules/moment/moment.js');

@Component({...})
export class MyComponent {
   ...
   ngOnInit() {
       this.now = moment().format();
   }
   ...
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.