You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Erich Gormann <e....@gormann.de> on 2018/04/24 05:39:14 UTC

Re: Javacsript module problem

Hi Cezary,

I appreciate this hint and was not aware about this time limit.
I give it a try, thanks!

Greetings, Erich



Am 26.03.2018 23:45, schrieb Cezary Biernacki:
> requirejs/AMD is much improvement of other "plain" Javascript approach once
> you get sizeable amount of Javascript code, both developers (dependencies
> between modules are explicit, and private parts can stay private instead of
> polluting global space name), and for users (HTML can be rendered before
> all Javascript is loaded and parsed). So I recommend understanding it - it
> is not really much complicated. However one pain point for me is that if
> some module fails to load for any reason, usually whole page becomes
> unusable, especially in Tapestry which add modal "loader" layer.
> Unfortunately a module can fail to load because of time out, and default
> RequireJS is too small, like 7 seconds only. Tapestry in development mode
> changes this value to 5 minutes, but uses default in the production mode,
> so it might be hard to detect for developers. I fix this by increasing
> "waitSeconds" parameter for RequireJS in my Layout component, e.g.:
>
>      @SetupRender
>      public void configureWaitSeconds() {
>          // See http://requirejs.org/docs/api.html#config-waitSeconds
>          javaScriptSupport.addModuleConfigurationCallback((config) ->
> config.put("waitSeconds", 120));
>      }
>
>
> On Mon, Mar 26, 2018 at 11:06 PM, Erich Gormann<e....@gormann.de>
> wrote:
>
>> Hi Cezary,
>>
>> first thanks. Yes, it was a mixture of all that, meanwhile I studied the
>> requirejs documentation strongly and checked out the tapestry5-jquery
>> project, to learn from it.
>>
>> And now a lot of things are already working!
>>
>> A lot in requirejs and AMD semms to be magical and I prefer to do java
>> coding, but we'll never stop to learn...
>>
>> Regards, Erich
>>
>>
>>
>>
>> Am 26.03.2018 17:21, schrieb Cezary Biernacki:
>>
>>> Hi Erich,
>>>
>>> One problem I can see is that function showLoadingIndicator() is not
>>> exported from define(.., function() { ... }). You should add "return {
>>> showLoadingIndicator: showLoadingIndicator };" at the end of "function() {
>>> ... }".
>>>
>>> However I believe it will not solve a problem indicated by message
>>> "Couldn’t resolve classpath asset from path
>>> META-INF\modules\hotel\loadingIndicatorTrigger.js" (I guess you are on
>>> Windows, so slashes are translated to slashes, but it should not be an
>>> issue). It suggests that the JS file is missing. So either it was not
>>> copied from the source directories to the directories (or JARs) used
>>> during
>>> execution - check your build directories to see if the file is really
>>> there, if not, than run your build process. Or file name
>>> "hotel/loadingIndicatorTrigger"
>>> is misspelled in somewhere.
>>>
>>> Cezary
>>>
>>>
>>>
>>>
>>>
>>> On Sun, Mar 25, 2018 at 3:19 PM, Erich Gormann<e....@gormann.de>
>>> wrote:
>>>
>>> Dear all,
>>>>    From a java class I load a js module and try to invoke a method in it
>>>> using the following line:
>>>>
>>>> javaScriptSupport.require("hotel/loadingIndicatorTrigger").
>>>> invoke("showLoadingIndicator");
>>>>
>>>> The script file loadingIndicatorTrigger.js is in
>>>> src/main/resources/META-INF/modules/hotel/loadingIndicatorTrigger.js
>>>>
>>>> This is the content of the script:
>>>> requirejs.config({
>>>> "shim": {
>>>> "hotel/globals/jquery.loading.indicator": {
>>>> deps: ["jquery"]
>>>> }
>>>> }
>>>> });
>>>>
>>>> define(["hotel/globals/jquery.loading.indicator"], function() {
>>>>
>>>> function showLoadingIndicator() {
>>>> var homeLoader = jQuery('body').loadingIndicator({
>>>> useImage: false,
>>>> }).data("loadingIndicator");
>>>> homeLoader.show();
>>>> }
>>>>
>>>> });
>>>>
>>>> Now the browser console prompts always the following error: "RequireJS
>>>> error: require: moduleLib is undefined".
>>>>
>>>> In my Eclipse I see a warning in above line of java code: "Couldn’t
>>>> resolve classpath asset from path META-INF\modules\hotel\loading
>>>> IndicatorTrigger.js"
>>>>
>>>> I tried different things like
>>>> define(["jquery", "hotel/globals/jquery.loading.indicator"],
>>>> function($) {
>>>> buterror is always the same.
>>>>
>>>> Is there something missing in my configuration or in the applications
>>>> module class?
>>>>
>>>> Thanks for your help!
>>>>
>>>>
>>>> Regards, Erich
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>>>> For additional commands, e-mail: users-help@tapestry.apache.org
>>>>
>>>>
>>>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
>> For additional commands, e-mail: users-help@tapestry.apache.org
>>
>>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org