2016-03-18 5 views
2

У меня небольшая проблема с импортом модулей nodejs. Для модуля HTTP этот синтаксис работает хорошо:«Не удается найти модуль» при импорте в TypeScript

import * as http from "http"; 

Но когда я пытаюсь сделать то же самое с «mysql2» node.js модуль:

import * as database from "mysql2"; 

Я дал мне ошибку:

Cannot find module 'mysql2' 

И отказываются компилировать эту строку. Я даже попытался синтаксис вроде этого (не знаю почему):

import {database} from 'mysql2'; 

Но нет никакой ошибки только тогда, когда я пишу так:

let database = require('mysql2'); 

В tsconfig.json я установил:

"module": "commonjs", 
"moduleResolution": "node", 

И, конечно, я уже установлены модули через НПМ в папке проекта:

npm install mysql2 --save 

Так что мой вопрос: почему импорт не работает, и у меня есть ошибка в коде Visual Studio?

ответ

1

Я думаю, что импорт не работает, потому что вам не хватает описаний типов для mysql2. Вы не разместили свои typings.json (или tsd.json), но я предполагаю, что для nodejs вы импортировали определения, но не для mysql2, поэтому вы можете импортировать «http», используя синтаксис «import from», а с mysql2 вам нужно использовать простой javascript nodejs 'require' для импорта.

+0

Это объясняет все, спасибо! Раньше у меня была такая же проблема с «mysql», но я установил DefinetlyTyped для нее, и ошибка исчезла. Итак, я отредактировал * d.ts для 'mysql' в 'mysql2' (так как он имеет обратный API), и теперь он отлично работает! –

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