【问题标题】:node.js/browserify require() not working on variable, but does work on string literalnode.js/browserify require() 不适用于变量,但确实适用于字符串文字
【发布时间】:2016-08-19 16:03:19
【问题描述】:
    const x = 'ui/SelectBox.js';
    const module = require(x);

不起作用(错误:找不到模块'ui/SelectBox.js'),但不知何故

    const module = require('ui/SelectBox.js');

有效。另外,如果我在命令行上调用 node 并执行

var x = 'ui/SelectBox.js'; require(x); 

确实有效。

我是在win10机器上做的,但也在debian下测试了同样的东西,得到了同样的结果。哦,我正在使用 watchify(用 browserify 自己尝试过,结果相同......)。

node --version

-> v5.6.0

编辑:好的,请阅读我自己的答案。它可能会为您节省一些麻烦。

【问题讨论】:

    标签: javascript node.js browserify require


    【解决方案1】:

    谜语的答案一如既往地简单得令人沮丧。

    如果你使用 browserify,你不能抽象你的 require(),因为(我猜)browserify 会解析你的源代码。

    因此,如果您绝对需要对变量执行 require(),请创建一个将名称映射到 require()d 模块的对象,然后使用它。

    【讨论】:

    • 这适用于节点 v5.12.0 - const index = "."; var app = require(index) 也适用于节点模块。我也很惊讶require('ui/SelectBox.js') 没有抛出。它应该是 require('./ui/SelectBox.js')const x = './ui/SelectBox.js'; require(x) 对我来说也很好......
    猜你喜欢
    • 2017-01-06
    • 1970-01-01
    • 2013-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-13
    • 1970-01-01
    相关资源
    最近更新 更多