【问题标题】:'Cannot find module' when import in TypeScript在 TypeScript 中导入时“找不到模块”
【发布时间】:2016-07-05 15:31:40
【问题描述】:

我在导入 nodejs 模块时遇到了一个小问题。 对于 http 模块,此语法运行良好:

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 中有错误?

【问题讨论】:

    标签: mysql node.js typescript node-mysql


    【解决方案1】:

    我认为导入不起作用,因为您缺少 mysql2 的打字稿定义。您还没有发布您的 typings.json(或 tsd.json),但我猜对于 nodejs,您已经导入了定义,但对于 mysql2 没有,因此您可以使用“import from”语法导入“http”,而使用 mysql2,您必须使用普通javascript nodejs 'require' 用于导入它。

    【讨论】:

    • 这解释了一切,谢谢!我之前对'mysql'有同样的问题,但我为它安装了DefinetlyTyped,错误就消失了。所以我将 'mysql' 的 *d.ts 编辑为 'mysql2' (因为它具有向后兼容的 API),现在效果很好!
    【解决方案2】:

    为myql2安装typescript类型定义如下:

    npm install --save-dev types/mysql2#semver:version

    版本由您选择。

    例如:

    npm i --save-dev types/mysql2#semver:^1.0.0

    【讨论】:

      猜你喜欢
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 2018-04-23
      • 2019-03-16
      • 2016-06-12
      • 2017-03-15
      • 2019-05-25
      • 2015-11-10
      相关资源
      最近更新 更多