这必须是一种常见的情况,但我没有找到明确的答案。这已经困扰了我几天了。
方案:
我构建了一个私有库/依赖项,并在我的主项目中的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个库中并且有相同的错误信息。
我可以通过查看我的图书馆副本来确认这种冲突:
...以及我的主项目中安装的内容:
显然,我需要这个依赖项的两个版本来满足我的构建,但强制任一版本都会破坏某些东西。
对此有什么优雅的解决方案?
答案 0 :(得分:0)
这是一个Webpack错误,已在3月份得到承认,但尚未解决。
https://github.com/webpack-contrib/css-loader/issues/447
建议的解决方法对我有用,就是为构建错误中列出的每个包添加这样的一行:
<span class="underline-on-hover">Shop</span>
不确定我喜欢这种解决方法。如果它发生了更多依赖,我会失去在客户端使用这些包的选项,不是吗?