为什么经典模块解析只能找到我安装的模块中的一个?

时间:2018-04-11 17:05:15

标签: node.js typescript

我有一个安装了几个模块的节点项目。

"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):错误TS2307:找不到模块' log4js'。

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

"moduleResolution": "node"

但是为什么在默认的模块分辨率下,log4js是唯一找不到的模块?由于所有模块都在同一个文件夹中,我希望编译器能够找到全部或全部模块。

1 个答案:

答案 0 :(得分:0)

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

正如命名所暗示的,这是"经典"行为而不是某些人可能真正想要的行为,而且主要是出于反对的原因而提供。