【问题标题】:Grails run-app services javascript starting with NODE_ENV line以 NODE_ENV 行开头的 Grails run-app services javascript
【发布时间】:2020-11-01 13:06:09
【问题描述】:

当使用 'grails run-app' 运行 Grails 4 应用程序时,网络服务器提供的每个 javascript 文件都以以下行开头:

var process = process || {env: {NODE_ENV: "development"}};

此行不是 javascript 源代码的一部分,可能是由资产管道插件生成的。这让我的开发环境(intellij 和 VSCode)完全混乱,并破坏了断点处理。

有人知道如何避免“grails run-app”生成此标题行吗?

一些版本信息:

  • Grails 4.0.5
  • asset-pipeline-grails:3.2.4
  • java 版本 11.0.9。

我使用“grails create-app”生成了“helloworld”应用程序,并使用“grails run-app”在不修改任何内容的情况下运行它。即使现在每个服务的 javascript 文件都有标题行。

【问题讨论】:

  • OK,headerline由JsNodeInjectProcessorasset-pipeline-core包生成,由asset.pipeline.JsEs6AssetFile附加,包含在META-INF/asset.specs中。我没有找到可以选择管道的文档(asset.pipeline.JsAssetFile isoasset.pipeline.JsEs6AssetFile)。圣杯魔法!
  • "我没有找到可以选择管道的文档"- 这些文档可在 asset-pipeline.com/manual/#extending 获得。
  • @JeffScottBrown 该手册描述了如何编写自己的管道组件。我找不到有关如何选择特定组件的信息。我应该更清楚这一点。您指向的手册对于编写我的解决方案中提到的组件非常宝贵。

标签: javascript debugging grails


【解决方案1】:

事实证明,您需要用自己的管道覆盖默认资产管道。您自己的管道将忽略罪魁祸首 JsNodeInjectProcessor。

定义自己的管道涉及以下步骤:

  • 修改您的 build.gradle,使所有资产管道模块在编译时可用
  • 基于 -core 包中的 JsAssertFile 创建 MyJsAssetFile。在处理器变量中,省略 JsNodeInjectProcessor。
  • 创建一个文件 main/resources/META-INF/asset-pipeline/asset.specs,省略asset.pipeline.JsAssetFile 并用MyJsAssetFile 替换它

这样做会导致 javascript 文件没有标题行,最重要的是我的 Intellij IDE 能够调试我的 grails 应用程序中嵌入的 javascript 逻辑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-20
    • 1970-01-01
    • 2010-11-08
    • 2014-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多