browserify检测自定义require()
我想在我的应用程序中使用一个自定义的require()
函数。 也就是说,我有节点的标准require()
和我写的一个自定义的文件,需要从rootRequire()
开始的文件,它在内部完成所有工作:
// rootRequire.js var path = require('path'); var rootPath = __dirname; global.rootRequire = function (modulePath) { var filepath = path.join(rootPath, modulePath); return require(filepath); }; module.exports = rootRequire;
但即使rootRequire()
内部使用节点的require()
,也不会获取通过该方法所需的任何文件
例:
require('rootRequire.js'); rootRequire('/A.js'); // server side it works, in the browser I get an error saying can't find module A.js
也许, 这将回答你为什么不能在浏览器上工作的问题。
引用所有者的评论:“Browserify只能分析静态需求,不在browserify的范围内处理dynamic需求”。
从技术上讲,你正试图从你的自定义需求的variablesdynamic加载文件。 显然,node.js可以处理。
在browserify的情况下,当您运行CLI构build捆绑包时,所有需求都将静态加载并打包。
HTH。
我build议在这里做的是这样的:
首先创build一个你需要的可以在rootRequire()
使用的rootRequire()
。
类似于browserify -r CURRENT_PATH/A.js -r CURRENT_PATH/B.js > rootRequirePackages.js
然后,在您的网页中,您可以同时包含rootRequirePackages.js和常规的浏览文件。
也许只是使用RequireJS ? 设置起来很简单,而且相对容易使用。