我在客户端应用中使用browesify。我的文件maps.js
和directions.js
位于我的index.js
文件旁边,在我的index.js
内,我有一个函数getPageName()
,它返回文件的名称我应该"要求"。我试图做的时候
var pageName = getPageName();
var page;
if (pageName === 'maps') {
page = require('./maps');
} else if (pageName === 'directions') {
page = require('./directions');
}
它工作正常。但是,当我尝试使用以下技巧来最小化我的代码时,
var pageName = getPageName();
var page = require('./' + pageName);
我在Chrome的控制台日志中收到错误Uncaught Error: Cannot find module './maps'
。为什么它在我使用字符串连接时不起作用,但在我使用明确传递路径时有效?
答案 0 :(得分:1)
这是Browserify和类似类型库的限制。为了执行require()
,库必须将js代码检查为字符串,并在代码运行之前确定文件路径。这意味着文件路径必须是静态的才能被拾取。
https://github.com/substack/node-browserify/issues/377
Browserify只能分析静态需求。它不属于 browserify来处理动态需求