我的代码是(在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",
...
}
当我启动应用程序时,出现如上所列的相同错误。
答案 0 :(得分:2)
@HadiMir 提到的解决方案会起作用。但是,由于您希望它与 ES6 一起使用,这里有一个示例 - Morgan logging with ESM。
您还需要在 package.json 中将“type”作为模块提及,以提及您将使用 ESM 导入样式。如果您不希望这样,另一种方法是使用带有“.mjs”扩展名的文件。
"type": "module",
答案 1 :(得分:1)
由于您在Node中工作,要导入任何模块/软件包,您必须使用以下语法
const winston = require('winston');
之后,您可以调用任何方法或使用Winston或您导入的任何其他模块提供的任何属性