如何从打字稿中使用npm模块?

我打字打字稿。 它在世界的hello世界舞台上运行良好。 我现在正在尝试使用一个npm模块:

index.ts =

 import _ = require('lodash') console.log(_.toUpper('Hello, world !')) 

这不起作用:

  • tsc index.ts – > Cannot find module 'lodash'. (2307) Cannot find module 'lodash'. (2307)
  • node-ts index.js – > Cannot find module 'lodash'. (2307) Cannot find module 'lodash'. (2307)

看打字稿和谷歌没有帮助。 其他S / O问题要么没有答案( 这里和这里 )或不相关。

元素:

  • 打字稿1.8最新
  • 是的,lodash安装npm i --save lodash并存在我的文件系统(选中)
  • 我也做typings i --save lodash
  • variablesimport * as _ from 'lodash'或者const _ = require('lodash')不起作用
  • 我尝试调整tsconfig.json选项build议在其他答案"moduleResolution": "node""module": "commonjs"build议在一些答案,仍然无法正常工作

我们如何在打字稿中使用npm包?

有几种方法可以从npm导入模块。 但是如果你没有打字, tsc总是会抱怨找不到你需要的模块(即使js 实际上在运行)。

  • 如果你有types但不使用tsconfig.json ,使用reference来导入types:

     /// <reference path="path/to/typings/typings.d.ts" /> import * as _ from 'lodash`; console.log(_.toUpper('Hello, world !')) 
  • 如果您使用的是tsconfig.json文件,请确保包含您的tsconfig.json文件(或不排除,您的select),并像上一个示例一样进行import

在没有可用types的情况下。 您有两种select:在.d.ts文件中写入自己的文件,或者忽略对库的types检查。

要完全忽略types检查(这不是推荐的方法),请将库导入到anytypes的variables中。

  const _: any = require('lodash'); console.log(_.toUpper('Hello, world !')) 

tsc会抱怨, require不存在。 提供node ,或declare它放弃错误。

你可能错过了宣言文件 。

请参阅DefinitelyTyped了解更多信息。


尝试这个:

 npm install --save lodash npm install --save @types/lodash 

现在你可以导入。

 import _ from 'lodash'; 

如果你正在导入的模块有多个导出 ,你可以这样做:

 import { Express, Router } from 'express'; 

如果您要导入的模块“没有默认导出” ,则需要执行以下操作:

 import * as http from 'http';