node.js - 为什么经典模块解析无法找到我已安装的模块之一?

标签 node.js typescript

我有一个安装了一些模块的 Node 项目。

"dependencies": {
    "@types/express": "^4.11.1",
    "@types/express-fileupload": "^0.1.1",
    "@types/mongodb": "^3.0.12",
    "@types/npm": "^2.0.29",
    "express": "^4.16.3",
    "express-fileupload": "^0.4.0",
    "log4js": "^2.5.3",
    "mongodb": "^3.0.5"
  }

当我使用 tsc -p 调用 typescript 编译器时。我收到以下错误:

app.ts(5,24): error TS2307: Cannot find module 'log4js'.

我可以通过将以下内容添加到 tsconfig.json 中的编译器选项来成功编译它:

"moduleResolution": "node"

但是为什么在默认模块解析下,log4js是唯一没有找到的模块呢?由于所有模块都在同一个文件夹中,我希望编译器能够找到所有模块,或者找不到它们。

最佳答案

log4js 在其 package.json 中指定了类型,但 classic 不会从非 @types 文件夹读取 package.json 条目。

顾名思义,这是“经典”行为,而不是某人可能真正想要的行为,并且主要是出于向后兼容的原因而提供的。

关于node.js - 为什么经典模块解析无法找到我已安装的模块之一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49780826/

相关文章:

javascript - 向特定用户广播事件(socket.io、redis、node)

javascript - node - fs.writeFile 创建一个空白文件

typescript - RxJS 可观察 : Emit every specific change in the array

typescript 类型困惑。变量不介意类型

TypeScript:获取 const 枚举的成员名称作为字符串?

javascript - Node.js:自定义命令行界面

javascript - 如何对路由发出 get 请求并从 API 检索信息?

javascript - HTML5 localStorage 有用的函数//JavaScript, TypeScript

angular - 动态路由已添加到路由器但不起作用

javascript - 打包一个 npm 模块,以便它可以在前端工作(例如使用 create-react-app) `You may need an appropriate loader to handle this file type`