node.js - 带有 ES6 模块、Typescript 和 Winston 的 node.js:“错误 TS2307:找不到模块‘winston’”
问题描述
我试图让 Winston 在启用 ES6 模块和打字稿的情况下在 node.js (v13.11.0) 中工作,但到目前为止没有成功:
我的代码是(在src/lib/logging.ts
):
import * as logger from 'winston';
// ...
首先我做了:
$ npm install --save winston
dependencies
已按预期将其添加到部分:
"dependencies": {
...
"winston": "^3.2.1",
...
}
但是当我启动应用程序时,我收到以下错误:
src/lib/logging.ts:2:25 - 错误 TS2307:找不到模块“winston”。
2 从'winston'导入*作为记录器;
然后我尝试了其他一些依赖项的工作:
$ npm install --save-dev @types/winston
npm WARN deprecated @types/winston@2.4.4: This is a stub types definition.
winston provides its own type definitions, so you do not need this installed.
这添加了一个旧版本devDependencies
,这似乎没用:
"devDependencies": {
...
"@types/winston": "^2.4.4",
...
}
当我启动应用程序时,我得到与上面列出的相同的错误。
解决方案
@HadiMir 提到的解决方案将起作用。但是,由于您希望它与 ES6 一起使用,因此这里有一个示例 - Morgan 使用 ESM 进行日志记录。
您还需要在 package.json 中提及“类型”作为模块,以提及您将使用 ESM 导入样式。如果您不希望这样做,替代方法是使用扩展名为“.mjs”的文件。
"type": "module",
推荐阅读
- android - Wear OS - 当前的 Play 商店版本看不到我的应用,但旧的 Play 商店版本可以看到我的应用?
- r - R中具有多个预测变量和结果的中介的功效分析
- python - 如何创建无限数组?
- python-3.x - Linked List 数据结构实际意义 返回Node本身
- java-7 - 如何从用户在java中输入的日期获取明年日期
- javascript - Discord.JS 如何使用参数
- python - GaussianProcessRegressor ValueError: 数组太大;`arr.size * arr.dtype.itemsize` 大于最大可能大小
- javascript - Javascript事件监听回调函数应该在回调队列中等待
- javascript - 当我运行此错误时:TypeError:navigation.getParam 不是函数:
- android - Android NDK 2021 年构建 FFMPEG