如何从打字稿中使用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
- variables
import * 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检查(这不是推荐的方法),请将库导入到any
types的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';