npm依赖纠结网络 - 我的图书馆需要一个不同版本的软件包而不是我的一个依赖项使用

时间:2017-12-17 17:07:13

标签: javascript node.js reactjs npm

这必须是一种常见的情况,但我没有找到明确的答案。这已经困扰了我几天了。

方案

我构建了一个私有库/依赖项,并在我的主项目中的package.json中引用它:

"my-shared-lib": "git+https://myuser:mypass@github.com/mygh/my-shared-lib.git#dev"

但是,我的主项目中的一个软件包依赖于相同的软件包(" uuid"),但是版本不同。不知道哪个,也许是它的React或其他东西。由于该第三方依赖关系的文件&文件夹结构,Webpack在构建时抛出错误:

   ./node_modules/my-github-lib/data/guid_id.js中的错误模块没有   发现:错误:无法解决&uudid / v1'在   ' C:\ MyProject的\ node_modules \ MY-github上-LIB \数据'解决&uuid / v1'在   ' C:\ MyProject的\ node_modules \ MY-github上-LIB \数据'解析请求是一个   模块使用描述文件:   C:\ MyProject \ node_modules \ my-github-lib \ package.json(相对路径:   。/数据)       Field'浏览器'使用描述文件后,不包含有效的别名配置:   C:\ MyProject \ node_modules \ my-github-lib \ package.json(相对路径:   。/数据)       解析为模块         在C:\ MyProject中寻找模块           使用描述文件:C:\ MyProject \ package.json(相对路径:。)             Field'浏览器'不包含有效的别名配置           使用描述文件后:C:\ MyProject \ package.json(相对路径:。)             使用描述文件:C:\ MyProject \ package.json(相对路径:./ uuid / v1)               没有延期                 Field'浏览器'不包含有效的别名配置                 C:\ MyProject \ uuid \ v1不存在               *                 Field'浏览器'不包含有效的别名配置                 C:\ MyProject \ uuid \ v1 *不存在               .js文件                 Field'浏览器'不包含有效的别名配置                 C:\ MyProject \ uuid \ v1.js不存在               .jsx                 Field'浏览器'不包含有效的别名配置                 C:\ MyProject \ uuid \ v1.jsx不存在               作为目录                 C:\ MyProject \ uuid \ v1不存在         C:\ MyProject \ node_modules \ my-github-lib \ data \ node_modules不存在或不是目录         C:\ MyProject \ node_modules \ my-github-lib \ node_modules不存在或不是目录         C:\ MyProject \ node_modules \ node_modules不存在或不是目录         C:\ MyProject \ projects \ node_modules不存在或不是目录         C:\ MyProject \ node_modules不存在或不是目录         C:\ Users \ myuser \ Documents \ Projects \ MyProject \ node_modules不存在或不是目录         C:\ Users \ myuser \ Documents \ Projects \ node_modules不存在或不是目录         C:\ Users \ myuser \ Documents \ node_modules不存在或不是目录         C:\ Users \ myuser \ node_modules不存在或不是目录         C:\ Users \ node_modules不存在或不是目录         C:\ node_modules不存在或不是目录         在C:\ MyProject \ node_modules中寻找模块           使用描述文件:C:\ MyProject \ package.json(相对路径:./ node_modules)             Field'浏览器'不包含有效的别名配置           使用描述文件后:C:\ MyProject \ package.json(相对路径:./ node_modules)             使用描述文件:C:\ MyProject \ node_modules \ uuid \ package.json(相对路径:./ v1)               没有延期                 C:\ MyProject \ node_modules \ uuid \ v1不存在               *                 C:\ MyProject \ node_modules \ uuid \ v1 *不存在               .js文件                 C:\ MyProject \ node_modules \ uuid \ v1.js不存在               .jsx                 C:\ MyProject \ node_modules \ uuid \ v1.jsx不存在               作为目录                 C:\ MyProject \ node_modules \ uuid \ v1不存在[C:\ MyProject \ uuid \ v1] [C:\ MyProject \ uuid \ v1 *]   [C:\ MyProject \ uuid \ v1.js] [C:\ MyProject \ uuid \ v1.jsx]   [C:\ MyProject的\ UUID \ V1]   [C:\ MyProject的\ node_modules \ MY-github上-LIB \数据\ node_modules]   [C:\ MyProject的\ node_modules \ MY-github上-LIB \ node_modules]   [C:\ MyProject的\ node_modules \ node_modules]   [C:\ MyProject \ projects \ node_modules] [C:\ MyProject \ node_modules]   [C:\用户\为myuser \文件\项目\ MyProject的\ node_modules]   [C:\用户\为myuser \文件\项目\ node_modules]   [C:\用户\为myuser \文件\ node_modules]   [C:\ Users \ myuser \ node_modules] [C:\ Users \ node_modules]   [C:\ node_modules] [C:\ MyProject \ node_modules \ uuid \ v1]   [C:\ MyProject的\ node_modules \ UUID \ V1 *]   [C:\ MyProject的\ node_modules \ UUID \ v1.js]   [C:\ MyProject的\ node_modules \ UUID \ v1.jsx]   [C:\ MyProject的\ node_modules \ UUID \ V1]

这只是一个例子 - 它发生在其他6个库中并且有相同的错误信息。

我可以通过查看我的图书馆副本来确认这种冲突:

enter image description here enter image description here

...以及我的主项目中安装的内容:

enter image description here enter image description here

显然,我需要这个依赖项的两个版本来满足我的构建,但强制任一版本都会破坏某些东西。

对此有什么优雅的解决方案?

1 个答案:

答案 0 :(得分:0)

这是一个Webpack错误,已在3月份得到承认,但尚未解决。

https://github.com/webpack-contrib/css-loader/issues/447

建议的解决方法对我有用,就是为构建错误中列出的每个包添加这样的一行:

<span class="underline-on-hover">Shop</span>

不确定我喜欢这种解决方法。如果它发生了更多依赖,我会失去在客户端使用这些包的选项,不是吗?