Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 子package.json中未满足的根package.json依赖项_Node.js_Typescript - Fatal编程技术网

Node.js 子package.json中未满足的根package.json依赖项

Node.js 子package.json中未满足的根package.json依赖项,node.js,typescript,Node.js,Typescript,假设我有一个这样的Typescript项目 root/ api/ package.json web/ package.json ... package.json 在rootpackage.json中安装了typescript依赖项(这是为了确保它在web和api中使用相同的版本) 如果我在web/package.json中安装了一个在Typescript上有peerdedency的包(比如ts loader),它会抱怨Typescript是一个未满足的依赖项 r

假设我有一个这样的Typescript项目

root/
  api/
    package.json
  web/
    package.json
  ...
  package.json
在root
package.json
中安装了typescript依赖项(这是为了确保它在web和api中使用相同的版本)

如果我在web/package.json中安装了一个在Typescript上有
peerdedency
的包(比如
ts loader
),它会抱怨Typescript是一个未满足的依赖项

root-package.json

{
  ...
  "devDependencies": {
    "@types/node": "^11.11.7",
    ...
    "typescript": "^3.3.4000"
  }
}
{
  ...
  "devDependencies": {
    "ts-loader": "^5.3.3",
    "webpack": "^4.29.6"
  }
}
web/package.json

{
  ...
  "devDependencies": {
    "@types/node": "^11.11.7",
    ...
    "typescript": "^3.3.4000"
  }
}
{
  ...
  "devDependencies": {
    "ts-loader": "^5.3.3",
    "webpack": "^4.29.6"
  }
}
如果不在web/package.json中添加Typescript,我如何解决这个问题


如果不可能,如何确保在多个模块中使用相同版本的包?

不幸的是,npm没有任何类型的package.json继承

由于这只是一个警告&由于node在父目录中查找
node\u模块
,所以一切都应该正常工作,我认为您可以执行以下操作之一:

  • 不要理会这个警告
  • 将ts加载程序上移到父目录
  • 在每个子目录()中声明并安装typescript的精确版本,并在必要时手动更新
  • 切换到Thread&use(我认为您仍然需要在每个包的依赖项中列出typescript,但至少它们只能安装一次。)
  • 使用js monorepo管理器,可以管理交叉依赖关系

谢谢!我真的很想避免使用lerna/Thread,但这似乎是唯一正确的解决方案。是的,我希望npm在处理子包方面更有能力!