2015-11-02 5 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" 
    ] 
} 

Если я пытаюсь скомпилировать это просто с помощью команды tsc (версия 1.6.2) внутри src, я получаю:

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

То, что я нахожу здесь непонятным, заключается в том, что я установил привязкис tsd, но когда я запустил tsc, я получаю эту ошибку. Похоже, я все сделал правильно, так почему же ошибка?

ответ

0

Так что я в конце концов понял, было то, что мне нужно явно включить typings файл в моем списке "files", то есть,

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

Другими словами, я должен был включать typings файлы непосредственно в "files" , Я действительно не знаю, почему. Я думал, что tsc был достаточно умен, чтобы искать их сам.

Если есть лучшее решение, которое не предполагает того, чтобы перечислить все файлы .d.ts явно "files", я все уши. Но я просто хотел указать, что это, по крайней мере, обходной путь.

Смежные вопросы