浏览自己浏览的库:相对路径错误

时间:2015-01-21 22:57:45

标签: browserify

我想使用使用browserify构建的库。该库正确构建,并且在单独使用时工作正常。

现在内置库位于我的vendor /目录中,我尝试在我的新应用程序中要求它:

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

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

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

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


更多细节:

lib看起来像这样:

myLib
 │  app.js
 │
 ├──models
 │    model.js
 │
 ├──utils
      logger.js
使用requires

app requires模型和模型require('../utils/logger')记录器。

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

到目前为止,非常好,myLib工作正常。

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

在这种情况下,我控制myLib,所以如果绝对必要可以改变它,但它是公司的另一个项目,如果有必要,我不愿意。但是,我在SO上看到at least one other question,其中某人明显遇到了与装有投球手的第三方库相同的问题。

2 个答案:

答案 0 :(得分:8)

这似乎是pretty borked

以下是一些选项:

  • 在使用之前在myLib上运行derequire

  • 尝试按以下方式浏览您的应用:

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

    如果它不起作用,请在noParse值中没有扩展名的情况下尝试。

  • 在消费之前缩小myLib

答案 1 :(得分:0)

aaaah,我终于开始工作了。使用browserify的独立选项和gulp-derequire完成了诀窍!耶!