素材牛VIP会员
webpack能分别加载两个库依赖的不同版本的loadsh么?
 懒***材  分类:Node.js  人气:1296  回帖:2  发布于6年前 收藏

如图的例子^

jointjs这个库依赖lodash 3.10.1

然而有的库依赖的是lodash 4

问题就在jointjs里面...本应require出来的lodash 3, 变成了lodash 4...

请问这能破不?

如何才能让需要 lodash 3 的库 require 到 lodash 3 , 需要 lodash 4 的 require 到 lodash 4 呢?

讨论这个帖子(2)垃圾回帖将一律封号处理……

Lv2 入门
xi***iu JS工程师 6年前#1

require 在加载模块时都会先在自己本身所在目录的 node_modules 里面找,找不到的话再逐目录向上查找,直到找到这个模块。在你的项目里面依赖两个不同的 lodash 版本时,实际上只有 4 被安装到了项目的 node_modules 目录下,jointjs 依赖的 lodash 是安装在 node_modules/jointjs/node_modules/lodash 目录下的。所以在 jointjs 中使用 require 并不会产生加载的依赖版本不正确的问题。

Lv3 码奴
谁***的 交互设计师 6年前#2

ok,找到问题了...

    resolve: {

        /*
         * An array of extensions that should be used to resolve modules.
         *
         * See: http://webpack.github.io/docs/configuration.html#resolve-extensions
         */
        extensions: ['.ts', '.js', '.json'],

        // An array of directory names to be resolved to the current directory
        modules: [helpers.root('src'), helpers.root('node_modules')],
    },

https://github.com/AngularCla...
这个项目中,webpack配置里面有如上描述

modules: [helpers.root('src'), helpers.root('node_modules')],

这条是罪魁祸首...
貌似是因为这条配置,所有require都去项目根目录下的 src 文件夹 和 node_modules 文件夹下加载包
从而导致依赖关系中的 node_modules 被忽略...

简直天坑...

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取