带有ES6模块,Typescript和Winston的node.js:“错误TS2307:找不到模块'winston'”

时间:2020-04-07 06:01:35

标签: node.js typescript express 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",
    ...
}

当我启动应用程序时,出现如上所列的相同错误

2 个答案:

答案 0 :(得分:2)

@HadiMir 提到的解决方案会起作用。但是,由于您希望它与 ES6 一起使用,这里有一个示例 - Morgan logging with ESM

您还需要在 package.json 中将“type”作为模块提及,以提及您将使用 ESM 导入样式。如果您不希望这样,另一种方法是使用带有“.mjs”扩展名的文件。

"type": "module",

答案 1 :(得分:1)

由于您在Node中工作,要导入任何模块/软件包,您必须使用以下语法

const winston = require('winston');

之后,您可以调用任何方法或使用Winston或您导入的任何其他模块提供的任何属性

相关问题