2016-03-18 69 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項目文件夾中的模塊:

npm install mysql2 --save 

所以我的問題是,爲什麼導入不起作用,我在Visual Studio Code中有錯誤?

回答

1

我認爲導入不起作用,因爲你缺少mysql2的打字稿定義。你還沒有發佈你的typings.json(或者tsd.json),但是我認爲你已經導入了定義的nodej而不是mysql2,因此你可以使用'import from'語法導入'http',而使用mysql2你必須使用plain javascript nodejs'require'導入它。

+0

解釋一切,謝謝! 我早些時候遇到了與'mysql'相同的問題,但是我爲它安裝了DefinetlyTyped,錯誤消失了。 所以我編輯了'mysql'的* d.ts到'mysql2'(因爲它有向後兼容的API),現在它工作的很棒! –