2016-03-18 45 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),现在它工作的很棒! –