2016-03-04 11 views
6

निम्नलिखित निर्देशिका संरचना को देखते हुए:टाइपस्क्रिप्ट को 'node_modules' में स्थापित मॉड्यूल क्यों नहीं मिल सकता है?

{project}/ 
    |-- node_modules/ 
    | |-- lodash 
    |-- src/ 
    | |-- index.ts 
    |-- lib/ (output) 
    | |-- index.js 
    | |-- index.d.ts 
    |-- package.json 
    |-- tsconfig.json 

जबकि बनाया उत्पादन कार्यों को ठीक से; tsc आदेश शिकायत है कि यह lodash मॉड्यूल जब मैं निम्न में से किसी का उपयोग का समाधान नहीं कर सकते हैं:

import _ from "lodash"; 
import _ = require("lodash"); 
import * as _ from "lodash"; 

मेरे 'tsconfig.json' फ़ाइल मैं शामिल किया है अंदर निम्नलिखित बातें:

... 

"target": "es6", 
"sourceMap": true, 
"module": "commonjs", 
"moduleResolution": "node", 

... 

लेकिन बावजूद यह अभी भी एनपीएम का उपयोग कर स्थापित मॉड्यूल में से कोई भी नहीं ढूंढ रहा है।

क्या मुझे टाइपस्क्रिप्ट को इन मॉड्यूल को खोजने के लिए आवश्यक कुछ याद आ रही है?

मुझे एहसास है कि टाइपस्क्रिप्ट परिभाषा फ़ाइल के बिना टाइपस्क्रिप्ट अतिरिक्त प्रकार के चेक प्रदान करने में असमर्थ है; हालांकि, निश्चित रूप से इन्हें any टाइप करने के लिए सही होना चाहिए?

+1

सुनिश्चित करें कि आप टाइपप्रति 1.6 किया हुआ है या अधिक है। यहां एक [अच्छी चर्चा] है (https://medium.com/@mweststrate/how-to-create-strongly-typed-npm-modules-1e1bda23a7f4#.ci86154ph) 1.6 से पहले यह कैसे "काम करता है" और यह कैसे के बाद काम करता है –

उत्तर

5

चूंकि lodash में node_modules/lodash फ़ोल्डर में परिभाषा फ़ाइल नहीं है, जो काम नहीं करेगा।

declare var _: any; 

Node.js के लिए आप चाहते हैं उपयोग करने के लिए:: आप इसे typings का उपयोग कर डाउनलोड या एक आयात के बजाय एक परिवेश घोषणा का उपयोग करना होगा

var _ = require('lodash'); 
संबंधित मुद्दे