我在try 打字.它在hello worldstage上运行良好.我现在try 使用npm模块:

index.ts =

import _ = require('lodash')

console.log(_.toUpper('Hello, world !'))

这不管用:

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

查看typescript文档并在谷歌上搜索也无济于事.其他S/O问题要么没有回答(herehere),要么没有关系.

元素:

  • typescript 1.8最新版本
  • 是的,lodash已安装npm i --save lodash并存在于我的文件系统中(选中)
  • 我也做了typings i --save lodash
  • 变体import * as _ from 'lodash'const _ = require('lodash')也不起作用
  • 我试着调整Tconfig.其他答案"moduleResolution": "node""module": "commonjs"中建议的json选项,以及一些答案中建议的json选项,仍然不起作用

我们如何使用typescript中的npm包??

推荐答案

[2018/12] New, up-to-date, answer to this question I asked in 2016, which stills shows a lot of activity despite having outdated answers.

长话短说,TypeScript需要type informations个关于程序包代码的信息(又称"type declaration files"又称"打字"),并正确地告诉您,否则您将失go TypeScript的全部意义.有几种解决方案可以提供它们或 Select 不提供它们,以下按最佳实践顺序列出:


Solution 0:模块已经提供了打字功能.如果是Package.json包含这样一行代码:

"typings": "dist/index.d.ts",

它已经启用了TypeScript.如果你正在阅读本页,情况很可能不是这样,所以让我们继续...


Solution 1:使用DefinitelyTyped个社区贡献的打字.对于"foo"模块,请try 以下操作:

npm add -D @types/foo

如果成功,中大奖!你现在有了打字功能,可以使用你的模块了.如果npm抱怨找不到@types/foo模块,我们继续...


Solution 2:提供有关此模块的自定义打字.(可 Select 零努力)

  1. 在项目根目录下创建一个名为"typings custom"的文件夹
  2. 在tsconfig中引用此文件夹的内容.json:
"include": [
    "./typings-custom/**/*.ts"
]
  1. 创建一个名为foo的文件.d、 ts[foo=模块名称],内容如下:
declare module 'foo'

您的类型代码现在应该编译,尽管没有类型信息(Type Script考虑类型为"任意"的FoO模块).

您也可以try 自己编写类型信息,查看official doc和/或DefinitelyTyped中的示例.如果是这样的话,可以考虑直接将打字输入模块(如果模块作者接受,请 Select 解决方案0)或DefiniteTyped(解决方案1)

Node.js相关问答推荐

无法在本地运行dockerfile

无法从ejs Web应用程序中的正文中提取数据

Stripe webhook无法访问Express请求原始正文

如何更改ejs中的镜像src,以防从OMDB API获取的某些镜像具有src=N/A

无法使用NPM安装REDUX和DATEPPICER

Inno Setup如何在现有文本文件中追加新内容

Next.js 路由不起作用 - 页面未正确加载

Redis Typescript 删除方法类型转换

Gulp 能否向 Docker 发出增量构建的第一次迭代完成的信号?

为什么这个 module.export 函数如果我直接传递它就不起作用,但如果我将它包装在一个匿名函数中就可以工作

Fly.io 启动问题:无法从源获取图像或构建错误:构建错误:连接期间出错:发布...

为什么 $or 在带有正则表达式的mongoose 中不能正常工作

使用 grunt 服务器,如何将所有请求重定向到根 url?

什么是nestjs错误处理方式(业务逻辑错误vs.http错误)?

Node.js + Express + Handlebars.js + 局部视图

AngularJS +sails.js

如何在 node 中转义 shell 命令的字符串?

如何判断 Node.js 中是否设置了环境变量?

Node.js 17.0.1 Gatsby 错误-数字信封 routine ::不支持 ... ERR_OSSL_EVP_UNSUPPORTED

Node.js 中的 Streams3 是什么,它与 Streams2 有何不同?