【问题标题】:Browserifying libraries that were themselves browserified: relative paths error浏览器本身是浏览器的库:相对路径错误
【发布时间】:2015-03-20 15:12:55
【问题描述】:

我想使用一个使用 browserify 构建的库。该库构建正确,单独使用时可以正常工作。

现在 built 库位于我的vendors/ 目录中,我尝试在我的新应用程序中使用它:

var myLib = require('./vendors/myLib');

当我尝试浏览我的应用程序时,它抱怨在该库中找不到某些内部 require 语句:

Error: Cannot find module '../utils/logger' from '/myApp/vendor'

Browserify 似乎正在尝试从错误的目录重新构建库。我该如何解决这个问题?


更多细节:

lib 如下所示:

myLib
 │  app.js
 │
 ├──models
 │    model.js
 │
 ├──utils
      logger.js

应用程序requires 模型,以及模型requires 记录器使用require('../utils/logger')

然后将其构建到 myLib.js (browserify app.js --standalone myLib > myLib.js) 中。

到目前为止,一切都很好,myLib 工作正常。

在我的新应用程序中,我将 myLib.js 放在 /vendor 目录中,require 列在顶部,并得到 Browserify 找不到 '../utils/logger' 的错误。

在这种情况下,我确实控制着 myLib,所以如果绝对必要可以更改它,但这是公司的另一个项目,如果有必要我不希望这样做。但是,我在 SO 上看到 at least one other question,显然有人在安装凉亭的第三方库时遇到了同样的问题。

【问题讨论】:

    标签: browserify


    【解决方案1】:

    aaaah,我终于让它工作了。使用 browserify 的独立选项和 gulp-derequire 就可以了!耶!

    【讨论】:

      【解决方案2】:

      这似乎是pretty borked

      这里有几个选项:

      • 在消费前在myLib 上运行derequire

      • 尝试像这样浏览您的应用:

        browserify({
          entries: ['./entry'],
          noParse: ['/abs/path/to/vendors/myLib.js'],
        })
        

        如果不起作用,请尝试在 noParse 值中不带扩展名。

      • 在使用之前缩小myLib

      【讨论】:

      • 这太不可思议了。引用的库只有 52 颗星,但每月有 20 万次下载。这是一个功能,基本上是发布库时所需的最基本机制之一,然而,这是实现它的“方式”:D
      猜你喜欢
      • 2011-04-26
      • 2020-12-31
      • 1970-01-01
      • 2017-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-11
      相关资源
      最近更新 更多