最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

npm依赖纠结网络

IT培训 admin 4浏览 0评论

npm依赖纠结网络

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

场景:

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

"my-shared-lib": "git+https://myuser:[email protected]/mygh/my-shared-lib.git#dev"

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

./node_modules/my-github-lib/data/guid_id.js中的错误找不到模块:错误:无法解析'C:\ MyProject \ node_modules \ my-github-lib \ data'解析'uuid / v1' 'C:\ MyProject \ node_modules \ my-github-lib \ data'中的'uuid / v1'解析请求是一个使用描述文件的模块:C:\ MyProject \ node_modules \ my-github-lib \ package.json(相对路径) :./ data)字段'browser'在使用描述文件后不包含有效的别名配置:C:\ MyProject \ node_modules \ my-github-lib \ package.json(相对路径:./ data)解析为模块查找对于C:\ MyProject中的模块使用描述文件:C:\ MyProject \ package.json(相对路径:。)字段'browser'在使用描述文件后不包含有效的别名配置:C:\ MyProject \ package.json (相对路径:。)使用描述文件:C:\ MyProject \ package.json(相对路径:./ uuid / v1)无扩展字段'browser'不包含有效的别名配置C:\ MyProject \ uuid \ v1不存在*字段“浏览器”不包含有效内容别名配置C:\ MyProject \ uuid \ v1 *不存在.js字段'browser'不包含有效的别名配置C:\ MyProject \ uuid \ v1.js不存在.jsx字段'browser'不包含包含有效的别名配置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)字段'browser'在使用描述文件后不包含有效的别名配置: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 doesn不存在[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 \ data \ node_modules] [C:\ MyProject \ node_modules \ my-git hub-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 \ 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个库中并且具有相同的错误消息。

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

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

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

这个优雅的解决方案是什么?

回答如下:

这是一个在3月份得到承认的Webpack漏洞,但还没有修复。

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

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

node: {
    fs: "empty",
    net: "empty",
    tls: "empty"
}

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

npm依赖纠结网络

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

场景:

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

"my-shared-lib": "git+https://myuser:[email protected]/mygh/my-shared-lib.git#dev"

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

./node_modules/my-github-lib/data/guid_id.js中的错误找不到模块:错误:无法解析'C:\ MyProject \ node_modules \ my-github-lib \ data'解析'uuid / v1' 'C:\ MyProject \ node_modules \ my-github-lib \ data'中的'uuid / v1'解析请求是一个使用描述文件的模块:C:\ MyProject \ node_modules \ my-github-lib \ package.json(相对路径) :./ data)字段'browser'在使用描述文件后不包含有效的别名配置:C:\ MyProject \ node_modules \ my-github-lib \ package.json(相对路径:./ data)解析为模块查找对于C:\ MyProject中的模块使用描述文件:C:\ MyProject \ package.json(相对路径:。)字段'browser'在使用描述文件后不包含有效的别名配置:C:\ MyProject \ package.json (相对路径:。)使用描述文件:C:\ MyProject \ package.json(相对路径:./ uuid / v1)无扩展字段'browser'不包含有效的别名配置C:\ MyProject \ uuid \ v1不存在*字段“浏览器”不包含有效内容别名配置C:\ MyProject \ uuid \ v1 *不存在.js字段'browser'不包含有效的别名配置C:\ MyProject \ uuid \ v1.js不存在.jsx字段'browser'不包含包含有效的别名配置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)字段'browser'在使用描述文件后不包含有效的别名配置: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 doesn不存在[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 \ data \ node_modules] [C:\ MyProject \ node_modules \ my-git hub-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 \ 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个库中并且具有相同的错误消息。

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

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

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

这个优雅的解决方案是什么?

回答如下:

这是一个在3月份得到承认的Webpack漏洞,但还没有修复。

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

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

node: {
    fs: "empty",
    net: "empty",
    tls: "empty"
}

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

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论