2015-11-02 88 views
0

今天早上我有一個問題讓我瘋狂。我會解釋這個問題,然後我會在下面提供我的答案(以便其他遇到此問題的人可以更快地找到解決方案)。在TypeScript中導入節點模塊時出錯

這是很容易通過只發出這些命令複製的問題:

tsd query react --action install 
mkdir src 
echo "import React = require('react');" > src/foo.ts 

我還包括以下tsconfig.json文件中src

{ 
    "version": "1.6.2", 
    "compilerOptions": { 
     "outDir": "./tsdir", 
     "target": "es5", 
     "module": "commonjs", 
     "moduleResolution": "node", 
     "isolatedModules": false, 
     "jsx": "react", 
     "experimentalDecorators": true, 
     "emitDecoratorMetadata": true, 
     "declaration": true, 
     "noImplicitAny": false, 
     "removeComments": true, 
     "noLib": false, 
     "preserveConstEnums": true, 
     "suppressImplicitAnyIndexErrors": true 
    }, 
    "files": [ 
     "foo.ts" 
    ] 
} 

如果我試圖通過簡單的編譯此在src內運行tsc(版本1.6.2)命令,我得到:

foo.ts(1,24): error TS2307: Cannot find module 'react'. 

我在這裏發現莫名其妙的是我已經安裝reacttsd綁定,但是當我運行tsc時,出現此錯誤。看起來我已經做得很好,爲什麼錯誤?

回答

0

所以我最終想通了,是我需要明確列入typings文件在我的"files"名單,即

{ 
    "version": "1.6.2", 
    "compilerOptions": { 
     ... 
    }, 
    "files": [ 
     "foo.ts", 
     "../typings/react/react.d.ts" 
    ] 
} 

換句話說,我必須包括typings文件明確在"files" 。我不知道爲什麼。我認爲tsc足夠聰明,可以自己尋找它們。

如果有一個更好的解決方案,不涉及列出明確"files"所有.d.ts文件,我所有的耳朵。但我只想指出,這至少是一種解決方法。