Browserify:通过字符串连接创建的路径需要js文件时出现未捕获的错误

时间:2016-07-19 23:45:34

标签: javascript browserify

我在客户端应用中使用browesify。我的文件maps.jsdirections.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'。为什么它在我使用字符串连接时不起作用,但在我使用明确传递路径时有效?

1 个答案:

答案 0 :(得分:1)

这是Browserify和类似类型库的限制。为了执行require(),库必须将js代码检查为字符串,并在代码运行之前确定文件路径。这意味着文件路径必须是静态的才能被拾取。

  

https://github.com/substack/node-browserify/issues/377

     

Browserify只能分析静态需求。它不属于   browserify来处理动态需求