कोणीय 2 + टाइपस्क्रिप्ट अनुप्रयोग में दर्ज करना


262

मैं एक कठिन समय के लिए कोशिश कर रहा हूँ दर्ज किए गए मॉड्यूल आयात करने की कोशिश कर रहा हूँ। मैंने npm + gulp का उपयोग करके अपने प्रोजेक्ट को सेटअप किया है, और उसी दीवार से टकराना चाहता हूं। मैंने नियमित रूप से रहने की कोशिश की है, लेकिन यह भी दर्ज है।

दर्ज करें npm पैकेज: (पैकेज रूट फ़ोल्डर में एक index.js फ़ाइल है)

import * as _ from 'lodash';    

का परिणाम:

error TS2307: Cannot find module 'lodash'.

Lodash-es npm पैकेज: (lodash.js में मैं पैकेज रूट फ़ोल्डर में एक डिफोट एक्सपोर्ट है)

import * as _ from 'lodash-es/lodash';

का परिणाम:

error TS2307: Cannot find module 'lodash-es'.   

Gulp टास्क और वेबस्टॉर्म दोनों एक ही मुद्दे की रिपोर्ट करते हैं।

मजेदार तथ्य, यह कोई त्रुटि नहीं देता है:

import 'lodash-es/lodash';

... लेकिन निश्चित रूप से कोई "_" नहीं है ...

मेरी tsconfig.json फ़ाइल:

{
  "compilerOptions": {
    "target": "es5",
    "module": "system",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": false
  },
  "exclude": [
    "node_modules"
  ]
}

मेरी gulpfile.js:

var gulp = require('gulp'),
    ts = require('gulp-typescript'),
    uglify = require('gulp-uglify'),
    sourcemaps = require('gulp-sourcemaps'),
    tsPath = 'app/**/*.ts';

gulp.task('ts', function () {
    var tscConfig = require('./tsconfig.json');

    gulp.src([tsPath])
        .pipe(sourcemaps.init())
        .pipe(ts(tscConfig.compilerOptions))
        .pipe(sourcemaps.write('./../js'));
});

gulp.task('watch', function() {
    gulp.watch([tsPath], ['ts']);
});

gulp.task('default', ['ts', 'watch']);

अगर मुझे सही तरीके से समझ में आ रहा है, तो modResolution: मेरे tsconfig में 'नोड' को आयात स्टेटमेंट्स को नोड_मॉडल फ़ोल्डर में इंगित करना चाहिए, जहां लॉश और लॉश-एस स्थापित हैं। मैंने आयात करने के विभिन्न तरीकों की बहुत कोशिश की है: निरपेक्ष पथ, रिश्तेदार पथ, लेकिन काम करने के लिए कुछ भी नहीं लगता है। कोई विचार?

यदि आवश्यक हो तो मैं समस्या को चित्रित करने के लिए एक छोटी सी ज़िप फ़ाइल प्रदान कर सकता हूं।


1
मैं इस समस्या में भी भाग गया। लॉकेट लाइब्रेरी में मॉड्यूलर फॉर्मेट में शामिल की गई टंकण परिभाषाएँ नहीं हैं, ताकि आयात विवरण काम न करें। अब के आसपास का एकमात्र काम यह लगता है कि आपकी index.html फ़ाइल में दर्ज करने के लिए एक स्क्रिप्ट संदर्भ बनाया गया है। फिर अपनीस्क्रिप्ट स्क्रिप्ट फ़ाइलों में lodash.d.ts का संदर्भ लें। उम्मीद है कि इसे जल्द ही ठीक कर लिया जाएगा। अगर इसके लिए कोई दूसरा काम है तो मैं इसे सुनना चाहूंगा।
ब्रांडो

1
ज़िप फ़ाइल बहुत अच्छा होगा। लेकिन ऐसा लगता है कि आप किसी भी मॉड्यूल लोडर (जैसे jspm या वेबपैक) का उपयोग नहीं कर रहे हैं? स्क्रिप्ट टैग के माध्यम से आप कोणीय को कैसे लोड कर रहे हैं? साथ ही बेहतर HTML पोस्ट। मैं आपको सलाह देता हूं कि आप मॉड्यूल लोडर के रूप में वेबपैक का उपयोग करें, यहां एक उदाहरण देखें -> github.com/jhades/angular2-library-example/tree/master/examples/… और यह एक न्यूनतम स्टार्टर है -> github.com/ -jhades/ng2- वेबपैक-न्यूनतम
कोणीय विश्वविद्यालय

इस लिंक को देखें: github.com/DefinitelyTyped/DefinitelyTyped/issues/4889
brando

1
मैंने अपनी मेल ts फ़ाइल में बस इसे जोड़ना समाप्त कर दिया: /// <संदर्भ पथ = "../ टाइपिंग / tsd.d.ts" />
डेवी

आज के रूप में उपरोक्त कार्यों में से कोई भी नहीं है। मैं कोणीय .2.4.4 स्टैक का उपयोग कर रहा हूं।

जवाबों:


442

यह टाइपस्क्रिप्ट 2.0 के रूप में यह करने के लिए कैसे है: (tsd और टाइपिंग निम्नलिखित के पक्ष में पदावनत किया जा रहा है):

$ npm install --save lodash

# This is the new bit here: 
$ npm install --save-dev @types/lodash

फिर, आपकी .ts फ़ाइल में:

कोई एक:

import * as _ from "lodash";

या (@Naitik द्वारा सुझाए गए):

import _ from "lodash";

मैं सकारात्मक नहीं हूं कि अंतर क्या है। हम पहले सिंटैक्स का उपयोग करते हैं और पसंद करते हैं। हालांकि, कुछ रिपोर्ट है कि पहला सिंटैक्स उनके लिए काम नहीं करता है, और किसी और ने टिप्पणी की है कि बाद वाला सिंटैक्स आलसी लोडेड वेबपैक मॉड्यूल के साथ असंगत है। YMMV।

27 फरवरी, 2017 को संपादित करें:

नीचे @Koert के अनुसार, import * as _ from "lodash";टाइपस्क्रिप्ट 2.2.1, लॉश 4.17.4, और @ टाइप / लॉश 4.14.53 के रूप में एकमात्र कार्य सिंटैक्स है। उनका कहना है कि अन्य सुझाया गया आयात वाक्य-विन्यास त्रुटि देता है "कोई डिफ़ॉल्ट निर्यात नहीं है"।


7
मैं पुष्टि कर सकता हूं कि यह प्रयोग करते समय काम करता है typescript 2.0.3। वास्तव typingsमें @typesएनपीएम पैकेज के पक्ष में निकालना ज्यादा साफ है।
एड्रियन मोइसा

8
import * as _ from "lodash";मेरे लिए काम नहीं कर रहा था, लेकिन import _ from "lodash";करता है।
गाबे ओ'लेरी

5
चेतावनी का एक शब्द, मैंने import _ from "lodash"वाक्यविन्यास को आलसी लोडेड वेबपैक मॉड्यूल के साथ असंगत पाया है । मुझे यकीन नहीं है कि, मैंने विस्तार से जांच नहीं की है।
टॉम मैकिन

6
"_आश" से आयात _; 2.0 में अब काम नहीं करता है। आपको "लेश" से आयात * as _ का उपयोग करना होगा;
रोजर फ़ार

6
यह केवल विकास में उपयोग किया जाना चाहिए, उत्पादन नहीं, इसलिए सेव-देव का उपयोग करें: npm install --save-dev @types/lodash यदि आप अजीब मुद्दे और बग देख रहे हैं, तो यह कोशिश करें: npm install --save-dev @types/lodash@4.14.50
leetheguy

64

अद्यतन 26 सितंबर, 2016:

जैसा कि @ टायटे का जवाब कहता है, 'टाइपिंग' इंस्टॉलेशन के बजाय जो हमने कुछ महीने पहले इस्तेमाल किया था, अब हम उसका इस्तेमाल कर सकते हैं:

npm install --save @types/lodash

उस उत्तर का समर्थन करने वाले कुछ अतिरिक्त संदर्भ यहां दिए गए हैं:

यदि अभी भी टाइपिंग इंस्टॉलेशन का उपयोग कर रहे हैं, तो नीचे दिए गए टिप्पणियों (दूसरों के द्वारा) को '' - ''म्बिएंट' 'और' '-ग्लोबल' '' 'के बारे में देखें।

इसके अलावा, नए क्विक स्टार्ट में, config अब index.html में नहीं है; यह अब systemjs.config.ts में है (यदि SystemJS का उपयोग करके)।

मूल उत्तर:

इसने मेरे मैक पर काम किया ( क्विक स्टार्ट के अनुसार कोणीय 2 स्थापित करने के बाद ):

sudo npm install typings --global
npm install lodash --save 
typings install lodash --ambient --save

आपको विभिन्न फाइलें प्रभावित होंगी, जैसे

  • /typings/main.d.ts
  • /typings.json
  • /package.json

कोणीय 2 क्विकस्टार्ट System.js का उपयोग करता है, इसलिए मैंने index.html में कॉन्फिगर करने के लिए 'मैप' को इस प्रकार जोड़ा है:

System.config({
    packages: {
      app: {
        format: 'register',
        defaultExtension: 'js'
      }
    },
    map: {
      lodash: 'node_modules/lodash/lodash.js'
    }
  });

तब मेरे .ts कोड में मैं ऐसा करने में सक्षम था:

import _ from 'lodash';

console.log('lodash version:', _.VERSION);

2016 के मध्य से संपादन:

जैसा कि @ तिब्बत का उल्लेख है, कुछ संदर्भों में, आपको इसकी आवश्यकता है:

import * as _ from 'lodash';

यदि कोणीय 2-बीज से शुरू हो रहा है , और यदि आप हर बार आयात नहीं करना चाहते हैं, तो आप नक्शे को छोड़ सकते हैं और कदमों को आयात कर सकते हैं और उपकरण / config / project.config.ts में केवल लेश लाइन को अनसुना कर सकते हैं।

अपने परीक्षणों को दर्ज करने के लिए, मुझे कर्मा में फ़ाइलों की सरणी में एक पंक्ति भी जोड़नी पड़ी ।conf.js:

'node_modules/lodash/lodash.js',

मैं देखता हूं कि यह मेरे टाइपस्क्रिप्ट मुद्दों को हल करता है, लेकिन एक ब्राउज़र में पेज लोड करना मुझे अभी भी त्रुटि दिखाई देता है कि यह मॉड्यूल लॉश को नहीं ढूंढ सकता है। ऐसा लगता है कि यह नोड_मॉड्यूल्स के बजाय '/ लॉश' के लिए एक असफल xhr अनुरोध कर रहा है।
ज़ैक

1
@ ज़ैक क्या आपने याद map: { lodash: 'node_modules/lodash/lodash.js' } किया System.config?
xwb1989

5
मेरे लिए यह केवल आयात से * _ _ से 'काम' के
तिब्बत

1
... और हमें import * as _ from 'lodash'इसके बजाय लिखने की आवश्यकता क्यों है import _ from 'lodash'?
smartmouse

2
@smartmouse --ambientएक पूर्व के लिए है --global। उत्तरार्द्ध का उपयोग 1.x में किया जाता है और आगे बढ़ता है। हालाँकि, मुझे नहीं लगता कि नवीनतम लॉश 4.x उस जैसे वैश्विक मॉड्यूल के रूप में संकलित होगा।
21

25

पहली चीजें पहले

npm install --save lodash

npm install -D @types/lodash

पूर्ण दर्ज करें पुस्तकालय लोड करें

//some_module_file.ts
// Load the full library...
import * as _ from 'lodash' 
// work with whatever lodash functions we want
_.debounce(...) // this is typesafe (as expected)

या केवल उन कार्यों को लोड करें जिनके साथ हम काम करने जा रहे हैं

import * as debounce from 'lodash/debounce'
//work with the debounce function directly
debounce(...)   // this too is typesafe (as expected)


UPDATE - March 2017

मैं वर्तमान में साथ काम कर रहा हूं ES6 modules, और हाल ही में मैं इसके साथ काम करने में सक्षम था lodash:

// the-module.js (IT SHOULD WORK WITH TYPESCRIPT - .ts AS WELL) 
// Load the full library...
import _ from 'lodash' 
// work with whatever lodash functions we want
_.debounce(...) // this is typesafe (as expected)
...

या importविशिष्ट lodash functionality:

import debounce from 'lodash/debounce'
//work with the debounce function directly
debounce(...)   // this too is typesafe (as expected)
...

ध्यान दें - अंतर की * asआवश्यकता नहीं हैsyntax


संदर्भ:

यहां छवि विवरण दर्ज करें

शुभ लाभ।


"ECMAScript 2015 मॉड्यूल को लक्षित करते समय आयात असाइनमेंट का उपयोग नहीं किया जा सकता"
टूलकिट

@Toolkit। यह इंगित करने के लिए धन्यवाद। मैंने जवाब अपडेट कर दिया है। कृपया जांचें कि क्या यह समाधान काम करता है और उचित रूप से चिह्नित है।
आकाश

2
import debounce from 'lodash/debounce'पैदावार TS1192: Module node_modules/@types/lodash/debounce has no default exportजब"allowSyntheticDefaultImports": false
क्रॉस

1
मैं अपनी पिछली टिप्पणी के साथ खड़ा हूं। वर्तमान में प्रकार फ़ाइल में डिफ़ॉल्ट निर्यात नहीं होता है, इसलिए यह अनुमति नहीं देता हैSyntheticDefaultImports झूठी।
kross

1
@ सकल भी ध्यान दें कि "allowSyntheticDefaultImports": trueकिसी भी त्रुटि से बचने के लिए आपकी tsconfig.json फ़ाइल में संकलक विकल्प जोड़ना आवश्यक है।
आकाश

24

चरण 1: निर्भरता में शामिल करने के लिए package.json फ़ाइल को संशोधित करें।

  "dependencies": {
"@angular/common":  "2.0.0-rc.1",
"@angular/compiler":  "2.0.0-rc.1",
"@angular/core":  "2.0.0-rc.1",
"@angular/http":  "2.0.0-rc.1",
"@angular/platform-browser":  "2.0.0-rc.1",
"@angular/platform-browser-dynamic":  "2.0.0-rc.1",
"@angular/router":  "2.0.0-rc.1",
"@angular/router-deprecated":  "2.0.0-rc.1",
"@angular/upgrade":  "2.0.0-rc.1",
"systemjs": "0.19.27",
"es6-shim": "^0.35.0",
"reflect-metadata": "^0.1.3",
"rxjs": "5.0.0-beta.6",
"zone.js": "^0.6.12",
"lodash":"^4.12.0",
"angular2-in-memory-web-api": "0.0.7",
"bootstrap": "^3.3.6"  }

चरण 2: मैं अपने angular2 एप्लिकेशन में SystemJs मॉड्यूल लोडर का उपयोग कर रहा हूं। तो मैं systemjs.config.js फ़ाइल को मॉडिफाइड करने के लिए दर्ज करूंगा।

(function(global) {

// map tells the System loader where to look for things
var map = {
    'app':                        'app', // 'dist',
    'rxjs':                       'node_modules/rxjs',
    'angular2-in-memory-web-api': 'node_modules/angular2-in-memory-web-api',
    '@angular':                   'node_modules/@angular',
    'lodash':                    'node_modules/lodash'
};

// 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': { defaultExtension: 'js' },
    'lodash':                    {main:'index.js', defaultExtension:'js'}
};

var packageNames = [
    '@angular/common',
    '@angular/compiler',
    '@angular/core',
    '@angular/http',
    '@angular/platform-browser',
    '@angular/platform-browser-dynamic',
    '@angular/router',
    '@angular/router-deprecated',
    '@angular/testing',
    '@angular/upgrade',
];

// add package entries for angular packages in the form '@angular/common': { main: 'index.js', defaultExtension: 'js' }
packageNames.forEach(function(pkgName) {
    packages[pkgName] = { main: 'index.js', defaultExtension: 'js' };
});

var config = {
    map: map,
    packages: packages
}

// filterSystemConfig - index.html's chance to modify config before we register it.
if (global.filterSystemConfig) { global.filterSystemConfig(config); }

System.config(config);})(this);

चरण 3: अब npm स्थापित करें

चरण 4: अपनी फ़ाइल में लॉश का उपयोग करने के लिए।

import * as _ from 'lodash';
let firstIndexOfElement=_.findIndex(array,criteria);

आपका समाधान टाइपस्क्रिप्ट टाइपिंग का ख्याल कैसे रखता है? Npm लॉश पैकेज में .d.ts फाइलें शामिल नहीं लगती हैं।
विटाली नियाज़ेउ

13

टाइपस्क्रिप्ट 2.0 के बाद से, टाइपिंग आयात करने के लिए @types npm मॉड्यूल का उपयोग किया जाता है।

# Implementation package (required to run)
$ npm install --save lodash

# Typescript Description
$ npm install --save @types/lodash 

अब जब से इस प्रश्न का उत्तर दिया गया है, मैं कुशलतापूर्वक आयात करने के तरीके में जाऊँगा

पूरे पुस्तकालय को आयात करने का विफल तरीका (main.ts में)

import 'lodash';

यह यहाँ नया सा है:

आपके द्वारा आवश्यक कार्यों के साथ एक लाइटर लॉश को लागू करना

import chain from "lodash/chain";
import value from "lodash/value";
import map from "lodash/map";
import mixin from "lodash/mixin";
import _ from "lodash/wrapperLodash";

स्रोत: https://medium.com/making-internets/why-use-chain-is-a-mistake-9bc1f80d51ba#.kg6azugbd

पुनश्च: उपरोक्त लेख बिल्ड टाइम में सुधार और ऐप के आकार को कम करने पर एक दिलचस्प पढ़ा है


1
टीएससी के लिए यह बहुत अच्छा है, हालांकि यह बंडल के साथ अन्य मुद्दों को देता है। किसी भी मौका आप रोलअप के माध्यम से यह काम पाने में कामयाब रहे? aurelia-cli इसके साथ समस्याएँ भी देता है :(। रोलअप त्रुटि : 'default' को Export_modules \ lodash \ kebabCase.js द्वारा निर्यात नहीं किया जाता है : ऑरेलिया cli त्रुटि : ऐसी कोई फ़ाइल या निर्देशिका नहीं, खोलें / प्रयोगात्मक \ au-proj \ node_modules \ lodash \ lodash \ kebabCase.js '
स्टीफन लॉटियर

7
लगता है @ प्रकार / लॉश अभी तक लाइटर सिंटैक्स का समर्थन नहीं करता है। error TS1192: Module '"node_modules/@types/lodash/chain/index"' has no default export. और छोटे import chain from "lodash/chain"आयातों के प्रयास के लिए अन्य मॉड्यूल के लिए आगे
jamsinclair

10

मैंने अपने प्रोजेक्ट में निम्न आदेशों के साथ सफलतापूर्वक लॉश को आयात किया है:

npm install lodash --save
typings install lodash --save

तब मैंने इसे निम्नलिखित तरीके से आयात किया:

import * as _ from 'lodash';

और systemjs.config.js में मैंने इसे परिभाषित किया है:

map: { 'lodash' : 'node_modules/lodash/lodash.js' }


8

मुझे ठीक वैसी ही समस्या थी, लेकिन एक Angular2 ऐप में, और यह लेख इसे हल करें : https://medium.com/@s_eschweiler/use-external-lbooks-with-angular-2-87e06db8b5d1#.p6gra5eli

लेख का सारांश:

  1. पुस्तकालय स्थापित करना npm install lodash --save
  2. Lodash के लिए टाइपस्क्रिप्ट परिभाषाएँ जोड़ें tsd install underscore
  3. जिसमें स्क्रिप्ट भी शामिल है <script src="node_modules/lodash/index.js"></script>
  4. SystemJS को कॉन्फ़िगर करना System.config({ paths: { lodash: './node_modules/lodash/index.js'
  5. आयात मॉड्यूल import * as _ from ‘lodash’;

मुझे उम्मीद है कि यह आपके मामले के लिए भी उपयोगी हो सकता है


6
tsd को अब हटा दिया गया है। आपको टाइपिंग का उपयोग करना चाहिए
hhsadiq

7

एक और सुरुचिपूर्ण समाधान केवल वही प्राप्त करना है जो आपको चाहिए, सभी लॉश को आयात न करें

import {forEach,merge} from "lodash";

और फिर अपने कोड में इसका उपयोग करें

forEach({'a':2,'b':3}, (v,k) => {
   console.log(k);
})

5
क्या यह वास्तव में काम करता है? मैंने यह कोशिश की है और यह बंडल के आकार को बदलने के लिए प्रतीत नहीं होता है।
कोड़ी

1
शायद तब वापस नहीं, लेकिन अब हाँ। यह पेड़ सबसे अच्छे रूप में हिल रहा है
Pian0_M4n

@ Pian0_M4n शायद मैं इसे गलत कर रहा हूँ लेकिन कोणीय cli के साथ कोशिश की 1.4.4 पेड़ हिलने से काम नहीं चला
alexKhymenko

@alexKhymenko क्या आप त्रुटि पोस्ट कर सकते हैं? क्या यह लॉश से जुड़ा है?
Pian0_M4n

@ Pian0_M4n कोई त्रुटि नहीं है, बस कोई पेड़ नहीं हिल रहा है। यह पूरी लाइब्रेरी को लोड नहीं करता है और तरीकों को मर्ज नहीं करता है।
alexKhymenko

4

यदि कोई अन्य व्यक्ति इस समस्या में भाग लेता है और उपरोक्त समाधानों में से कोई भी "डुप्लिकेट पहचानकर्ता" मुद्दों के कारण काम नहीं करता है, तो इसे चलाएं:

npm install typings --global

टाइपिंग चीजों के पुराने संस्करणों के साथ गड़बड़ हो जाती है और आपको "डुप्लीकेट पहचानकर्ता" मुद्दों का एक गुच्छा मिलेगा। इसके अलावा आपको उपयोग करने की आवश्यकता नहीं है--ambient अब तक नहीं है जहाँ तक मैं बता सकता हूँ।

इसलिए एक बार टाइप करने के बाद, यह काम करना चाहिए (कोणीय 2 क्विकार्ट का उपयोग करके)।

Daud:

npm install lodash --save 
typings install lodash --save

सबसे पहले, इसे systemjs.config.js में जोड़ें:

'lodash':                     'node_modules/lodash/lodash.js'

अब आप इसे किसी भी फ़ाइल में उपयोग कर सकते हैं: import * as _ from 'lodash';

npm installयदि आप अभी भी समस्याएँ हैं तो अपने टाइपिंग फ़ोल्डर को हटाएं और चलाएं ।


4

कृपया ध्यान दें कि npm install --saveउत्पादन कोड में आपके ऐप के लिए जो भी निर्भरता आवश्यक है, उसे बढ़ावा देगा।
"टाइपिंग" के लिए, यह केवल टाइपस्क्रिप्ट द्वारा आवश्यक है, जिसे अंततः जावास्क्रिप्ट में ट्रांसप्लड किया जाता है। इसलिए, आप शायद उन्हें उत्पादन कोड में नहीं रखना चाहते हैं। मैं सुझाव देता हूं कि इसे अपनी परियोजना के devDependenciesबजाय, उपयोग करके रखें

npm install --save-dev @types/lodash

या

npm install -D @types/lodash

(उदाहरण के लिए आकाश पोस्ट देखें)। वैसे, यह जिस तरह से यह ng2 tuto में किया जाता है।

वैकल्पिक रूप से, यहां बताया गया है कि आपका पैकेज कैसे दिख सकता है।

{
    "name": "my-project-name",
    "version": "my-project-version",
    "scripts": {whatever scripts you need: start, lite, ...},
    // here comes the interesting part
    "dependencies": {
       "lodash": "^4.17.2"
    }
    "devDependencies": {
        "@types/lodash": "^4.14.40"
    }
}

बस एक टिप

इसके बारे npmमें अच्छी बात यह है कि आप बस शुरू कर सकते हैं npm install --saveया --save-devयदि आप उस निर्भरता के नवीनतम उपलब्ध संस्करण के बारे में सुनिश्चित नहीं हैं, जिसे आप खोज रहे हैं, और यह आपके package.jsonलिए आगे उपयोग के लिए स्वचालित रूप से इसे आपके लिए सेट कर देगा ।


3

मैंने इसके लिए टाइपिंग lodash-esभी बनाई थी , इसलिए अब आप वास्तव में निम्न कार्य कर सकते हैं

इंस्टॉल

npm install lodash-es -S
npm install @types/lodash-es -D

प्रयोग

import kebabCase from "lodash-es/kebabCase";
const wings = kebabCase("chickenWings");

यदि आप रोलअप का उपयोग करते हैं, तो मेरा सुझाव है कि इसके बजाय इसका उपयोग करें lodashक्योंकि यह ठीक से ट्रीशेक हो जाएगा।


3

निम्नलिखित संकेतन का उपयोग कर लॉज से आंशिक आयात कोणीय 4.1.x में काम करना चाहिए :

let assign = require('lodash/assign');

या मॉड्यूल में 'लॉश-एसस' और आयात का उपयोग करें:

import { assign } from 'lodash-es';

import { assign } from 'lodash-es';अभी भी पूरी लाइब्रेरी (बंडल साइज़ को देखते हुए) आयात करता है
ihorbond

2

के माध्यम से स्थापित करें npm

$ npm install lodash --save

अब, importफ़ाइल में:

$ import * as _ from 'lodash';

ENV:

कोणीय सीएलआई: 1.6.6
नोड: 6.11.2
ओएस: डार्विन x64 एंगुलर
: 5.2.2
टाइपस्क्रिप्ट: 2.4.2
वेबपैक: 3.10.0


1
  1. दर्ज करें

sudo npm install typings --global npm install lodash --save typings install lodash --ambient --save

  1. Index.html में, दर्ज करने के लिए मानचित्र जोड़ें:

System.config({ packages: { app: { format: 'register', defaultExtension: 'js' } }, map: { lodash: 'node_modules/lodash/index.js' } });

  1. .Ts कोड आयात लॉश मॉड्यूल

import _ from 'lodash';


यह त्रुटि फेंक रहा है:$ typings install lodash --ambient --save typings ERR! message https://api.typings.org/entries/npm/lodash/versions/latest responded with 407, expected it to equal 200
kamayd

1

मैं वेब 2 के साथ एनजी 2 का उपयोग कर रहा हूं, सिस्टम जेएस का नहीं। मेरे लिए कदम की जरूरत थी:

npm install underscore --save
typings install dt~underscore --global --save

और फिर फ़ाइल में मैं अंडरस्कोर आयात करना चाहता हूँ:

import * as _ from 'underscore';

1

के माध्यम से प्रकार typingsऔर tsdआदेशों का प्रबंधन अंततः npm के माध्यम से उपयोग करने के पक्ष में पदावनत किया जाता हैnpm install @types/lodash

हालाँकि, मैं लंबे समय से आयात वक्तव्य में "मॉड्यूल लॉडश नहीं पा सकता" से जूझ रहा था:

import * as _ from 'lodash';

अंततः मुझे एहसास हुआ कि टाइपस्क्रिप्ट केवल नोड_मॉडल / @ प्रकार के संस्करण 2 से लोड होगी, और मेरी VsCode भाषा सेवा अभी भी 1.8 का उपयोग कर रही थी, इसलिए संपादक त्रुटियों की रिपोर्ट कर रहा था।

यदि आप VSCode का उपयोग कर रहे हैं तो आप शामिल करना चाहेंगे

"typescript.tsdk":  "node_modules/typescript/lib"

अपनी VSCode सेटिंग्स में। json फ़ाइल (कार्यस्थान सेटिंग्स के लिए) और सुनिश्चित करें कि आपके पास टाइपस्क्रिप्ट संस्करण है = = 2.0.0 द्वारा स्थापित npm install typescript@2.0.2 --save-dev

उसके बाद मेरा संपादक आयात के बयान के बारे में शिकायत नहीं करेगा।


1

अगर बाद में काम नहीं किया

$ npm install lodash --save 
$ npm install --save-dev @types/lodash

आप यह कोशिश करते हैं और लॉश आयात करते हैं

typings install lodash --save


0

सभी थ्रू टर्मिनल स्थापित करें:

npm install lodash --save
tsd install lodash --save

Index.html में पाथ जोड़ें

<script>
    System.config({
        packages: {
            app: {
                format: 'register',
                defaultExtension: 'js'
            }
        },
        paths: {
            lodash: './node_modules/lodash/lodash.js'
        }
    });
    System.import('app/init').then(null, console.error.bind(console));
</script>

.Ts फ़ाइल के शीर्ष पर आयात दर्ज करें

import * as _ from 'lodash'

7
tsd को अब हटा दिया गया है। आपको टाइपिंग का उपयोग करना चाहिए
hhsadiq

1
टंकण अब हटा दिया गया है। आपको @types
Luca Trazzi

0

मैं प्रीबूट / कोणीय-वेबपैक का उपयोग करके कोणीय 4.0.0 पर हूं , और थोड़ा अलग मार्ग जाना था।

@Taytay द्वारा प्रदान किया गया समाधान ज्यादातर मेरे लिए काम करता है:

npm install --save lodash
npm install --save @types/lodash

और दिए गए .component.ts फ़ाइल के उपयोग से कार्यों को आयात करना :

import * as _ from "lodash";

यह काम करता है क्योंकि कोई "डिफ़ॉल्ट" निर्यात वर्ग नहीं है। : खान में अंतर मैं तरीका है कि 3 पार्टी पुस्तकालयों में लोड करने के लिए प्रदान किया गया था खोजने के लिए की जरूरत थी vendor.ts , जिस पर बैठ गया:

src/vendor.ts

मेरा विक्रेता .ts फ़ाइल अब इस तरह दिखता है:

import '@angular/platform-browser';
import '@angular/platform-browser-dynamic';
import '@angular/core';
import '@angular/common';
import '@angular/http';
import '@angular/router';

import 'rxjs';
import 'lodash';

// Other vendors for example jQuery, Lodash or Bootstrap
// You can import js, ts, css, sass, ...

1
आपको वास्तव में पूरी rxjs और सबकुछ दर्ज करने से बचना चाहिए ...
MTJ

0

शायद यह बहुत अजीब है, लेकिन उपरोक्त में से किसी ने भी मेरी मदद नहीं की, सबसे पहले, क्योंकि मैंने लॉज़ को ठीक से स्थापित किया था (उपरोक्त सुझावों के माध्यम से फिर से स्थापित)।

तो लंबी कहानी संक्षेप में इस मुद्दे को लॉश_.has से विधि का उपयोग करने के साथ जोड़ा गया था ।

मैंने इसे केवल JS inऑपरेटर का उपयोग करके ठीक किया ।


-1

कोशिश >> tsd install lodash --save


8
tsd को अब हटा दिया गया है। आपको टाइपिंग का उपयोग करना चाहिए
hhsadiq

7
टंकण अब हटा दिया गया है। आपको @types .. :) का उपयोग करना चाहिए
harishr

12
मैं एक और पदावनति की प्रतीक्षा कर रहा हूँ;)
इदरीस खान

पदावनत पदावनत है। ग़लती से .. मुझे दोष मत देना। यू ने उस एक के लिए कहा ;-)
सरोरा

-1

आप अच्छी पुरानी आवश्यकता के माध्यम से भी आगे बढ़ सकते हैं और आयात कर सकते हैं, अर्थात:

const _get: any = require('lodash.get');

यह केवल एक चीज है जो हमारे लिए काम करती है। बेशक, सुनिश्चित करें कि किसी भी आवश्यकता () कॉल आयात के बाद आती हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.