Hi Carlos,
Tapestry in the production mode minifies all JavaScript. It seems that
minification in T5.5 adds "'use strict';" pragma to minified files. "'use
strict';" instructs the browser to fail if anything is wrong with your
code, instead of trying quietly to fix problems. In your code "init =
*function*(){"  refers to undeclared variable "init". Non-strict JavaScript
automatically defines such variable, but in the strict mode it fails with
the error: "init is not defined". All you need is to declare "init",
e.g.: "var init = function(){".

"use strict" is generally a good idea, because it ensures that all browser
will execute your code in the same way, and any typos will not be silently
ignored. I recommend adding line
'use strict';
at the beginning of your .js file, so the code will work the same way in
the development and and the production mode.

Best regards,
Cezary




On Mon, Apr 13, 2020 at 8:45 PM Carlos Montero Canabal <
carlosmonterocana...@gmail.com> wrote:

> Hi Tapestry users!
>
> I'm deploying my first 5.5.0 app into production... and I checked that my
> modules js doesnt work with production mode = true.
>
> Example:
>
> article.js:
>
> define(["jquery", "prism"], *function*($, Prism) {
>
> init = *function*(){
>
> Prism && Prism.hasOwnProperty('default') ? Prism['default'] : Prism;
>
> }
>
> *return*{
>
> init : init
>
> }
>
> });
>
>
> ArticlePage.java
>
>
> javaScriptSupport.require("article").invoke("init");
>
>
> NOTE: It works fine with production mode = false.
>
>
> The error is "RequireJS error: define: init is not defined, modules
> article".
>
>
> However, if I rewrite my module as below:
>
>
> define(["jquery", "prism"], *function*($, Prism) {
>
> *return* *function*(){
>
> Prism && Prism.hasOwnProperty('default') ? Prism['default'] : Prism;
>
> }
>
> });
>
>
> And my javacode to:
>
>
> javaScriptSupport.require("article");
>
>
> It works fine. But I want to define multiple functions inside the same
> module.
>
>
> In my apps in Tapestry 5.4.X I always use the modules as I wrote before.
>
>
> Any suggestion?
>
>
> For other hand, I think there is a missaligment on tapestry-webresources:
>
>
> [image: image.png]
>
> In my project, with maven 3.6.3 protobuf-java is 2.5.0 from less4j but
> webapp breaks when it inits the closure compiler. I had to fix writing the
> version in my pom to 3.0.2.
>
> Best regards
>
> Carlos Montero
>

Reply via email to