我刚刚编写了第二个webpack加载器。这次我通过传递给require
的查询参数来研究接受参数。现在我的公共API看起来像这样(coffeescript):
asset_url = require "../assets/eyes.gif?resize=150x150&to_webm=true"
require
调用是通过原始资产路径加上一些参数传递的。当params指示时,它会调整它并将其转换为webm,返回新路径。
问题是Webpack需要静态requires
。即如果我将其更改为以下(再次,coffeescript):
params = "resize=150x150&to_webm=true"
asset_url = require "../assets/eyes.gif?#{params}"
然后webpack说Uncaught Error: Cannot find module "../assets"
即使在我不使用变量时它完全正常。
那么,我的Webpack加载器是否仅限于这种传递参数的方式?虽然Webpack的功能非常先进,但这一方面似乎非常原始。
答案 0 :(得分:0)
Webpack静态解析已编译的CoffeeScript代码并查找require
次调用。您编译的咖啡代码将如下所示:
asset_url = require("../assets/eyes.gif?" + params)
通常,Webpack在require calls
as described here中看到一个参数时会创建一个上下文,但正如您所看到的那样,它无法在捆绑时猜测您的加载器参数,因此会抛出错误。