Django + Django-Pipeline with Javascript "Require"



我有一个在Javascript库上调用require的模块。我正试图用Django-Pipeline压缩我的。js文件,但在collectstatic之后,网页给出了错误:

UncaughtReferenceError: require is not Defined

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

编辑:我试图确保"所需"模型首先在管道中压缩,但我似乎无法压缩require被调用的模块,而不返回错误。

根据我的经验,很难将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是正确的选择吗?":)

这是因为你的JS压缩器(例如YUGLIFY)也在缩小javascript变量名,所以require可能已经被命名为xy。为了克服这个问题,在JS压缩器中设置适当的选项,而不是缩小变量名。

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

对于Yuglify,该参数将是mangle:False,它将停止混淆名称。

可能是PIPELINE_DISABLE_WRAPPER。尝试将其设置为True

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

最新更新