2016-03-04 262 views
6

考慮到以下目錄結構:爲什麼TypeScript找不到安裝在'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", 

... 

但是,儘管這仍然沒有找到任何使用npm安裝的模塊。

我是否缺少使TypeScript找到這些模塊所需的內容?

我意識到,如果沒有TypeScript定義文件,TypeScript將無法提供額外的類型檢查;然而,當然這些應該只是默認爲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的,你不得不使用:

var _ = require('lodash'); 
相關問題