Browserify要求具有动态路径的文件失败,但在使用硬编码路径时有效

时间:2016-03-01 17:20:22

标签: reactjs browserify

我开始使用Browserify,我正在尝试根据名为components.coffee的配置文件来要求一个文件数组。我将React与CoffeeScript结合使用,但我怀疑它与问题本身有关。

index.cjsx

path = require 'path'

componentList = require '../commons/components'

components = componentList.map (component) ->
    console.log path.relative(__dirname, component)
    console.log '../commons/button/button.doc.js'
    console.log '../commons/button/button.doc.js' is path.relative(__dirname, component)
    console.log require(path.relative(__dirname, component))
    console.log require '../commons/button/button.doc.js'
    require(path.relative(__dirname, component))

公地/ components.coffee

module.exports = [
    "../commons/button/button.doc.js"
]

输出: enter image description here

删除行console.log require '../commons/button/button.doc.js' 时的输出: enter image description here

如果我不要求使用硬编码路径的文件,则会失败。我不解释为什么硬编码路径和动态路径是平等的。

我猜这是与Browserify有关的东西,可能是一个缓存问题,当通过硬编码字符串需要模块时解决了这个问题。但我真的不知道。

与此同时,我将使用一种解决方法,但我想了解这里发生了什么! :)

我的解决方案是改变我的设计。 components.coffee返回一个字符串数组,它现在返回一个已加载文件的数组。

公地/ components.coffee

module.exports = [
    require "../commons/button/button.doc.js"
]

然后,在我的 index.cjsx 中,我只需加载它:

components = require '../commons/components'

1 个答案:

答案 0 :(得分:1)

此行为是设计使然。您可以在herehere找到更多相关信息。