我想使用使用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,其中某人明显遇到了与装有投球手的第三方库相同的问题。
答案 0 :(得分:8)
这似乎是pretty borked。
以下是一些选项:
在使用之前在myLib
上运行derequire。
尝试按以下方式浏览您的应用:
browserify({
entries: ['./entry'],
noParse: ['/abs/path/to/vendors/myLib.js'],
})
如果它不起作用,请在noParse
值中没有扩展名的情况下尝试。
在消费之前缩小myLib
。
答案 1 :(得分:0)