5

我有一个调用requireJavascript 库的模块。我正在尝试使用 Django-Pipeline 压缩我的 .js 文件,但是在collectstatic网页出现错误之后:

UncaughtReferenceError: require is not Defined

如果我不使用 Django-Pipeline 压缩文件,则正常的测试/部署与 collect-static 配合得很好。在不破坏依赖关系的情况下缩小我的 .js 文件的正确设置是什么 - 文档有点稀疏。django-pipeline 是正确的选择吗?

编辑:我试图确保首先在管道中压缩“必需”模型,但如果require不返回错误,我似乎根本无法压缩调用的模块。

4

3 回答 3

4

根据我的经验,很难将 require.js 和 django-pipeline 结合起来(尽管它们都是很棒的项目)。

我从事过一个项目,该项目将 require.js 用于其所有 javascript。我尝试使用 django-pipeline 但无法使其与 require.js 一起正常工作。我们最终使用https://github.com/etianen/django-require处理 javascript,使用 django-pipeline 处理 css 缩小。

我建议要么尝试删除 require.js 并手动包含它使用管道导入的库,或者使用 require.js 来构建和缩小所有 javascript 资产。您可以添加一个新步骤来构建所有 javascript 文件,并直接在模板中或使用管道链接到这些文件。

抱歉,这可能不是您回答的实际“解决方案”,但您确实问过“django-pipeline 是正确的选择吗?” :)

于 2014-07-25T16:56:12.860 回答
2

这是因为您的 JS 压缩器(例如 YUGLIFY)也在缩小 javascript 变量名称,因此require可能被命名为类似xor的名称y。为了克服这个在你的 JS 压缩器中设置正确的选项,不要缩小变量名。

http://django-pipeline.readthedocs.org/en/latest/compressors.html#pipeline-yui-js-arguments

对于 Yuglify,这个参数将是mangle:False,这将停止破坏名称。

于 2014-07-23T07:17:05.387 回答
1

也许是PIPELINE_DISABLE_WRAPPER。尝试将其设置为True.

https://django-pipeline.readthedocs.org/en/latest/configuration.html#wrapped-javascript-output

于 2014-07-01T07:33:08.917 回答