簡體   English   中英

node.js 與 ES6 模塊、Typescript 和 Winston:“錯誤 TS2307:找不到模塊 'winston'”

[英]node.js with ES6 modules, Typescript and Winston: “error TS2307: Cannot find module 'winston'”

我試圖讓 Winston 在 node.js (v13.11.0) 中工作,啟用 ES6 模塊和 typescript,但到目前為止沒有成功:

我的代碼是(在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",

由於您在 Node 中工作,因此要導入任何模塊/包,您必須使用以下語法

const winston = require('winston');

之后,您可以調用任何方法或使用 Winston 或您導入的任何其他模塊提供的任何屬性

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM