<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <title>Liferay NPM Bundler with ReactJS and Clay</title>
  <link rel="self" href="https://liferay.dev/c/message_boards/find_thread?p_l_id=119785294&amp;threadId=113591198" />
  <subtitle>Liferay NPM Bundler with ReactJS and Clay</subtitle>
  <id>https://liferay.dev/c/message_boards/find_thread?p_l_id=119785294&amp;threadId=113591198</id>
  <updated>2026-04-04T13:30:09Z</updated>
  <dc:date>2026-04-04T13:30:09Z</dc:date>
  <entry>
    <title>RE: Liferay NPM Bundler with ReactJS and Clay</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=113630558" />
    <author>
      <name>René Hengstermann</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=113630558</id>
    <updated>2019-05-14T14:57:34Z</updated>
    <published>2019-05-14T14:57:34Z</published>
    <summary type="html">Hello Ivan, &lt;br /&gt;&lt;br /&gt;that was the key :-)&lt;br /&gt;&lt;br /&gt;I was looking into the frontend spa module in the Liferay source for the Version, but it was the wrong one. &lt;br /&gt;&lt;br /&gt;It now renders and works, thank you very much.&lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt;Rene</summary>
    <dc:creator>René Hengstermann</dc:creator>
    <dc:date>2019-05-14T14:57:34Z</dc:date>
  </entry>
  <entry>
    <title>RE: Liferay NPM Bundler with ReactJS and Clay</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=113629328" />
    <author>
      <name>Iván Zaera Avellón</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=113629328</id>
    <updated>2019-05-14T13:44:23Z</updated>
    <published>2019-05-14T13:44:23Z</published>
    <summary type="html">What version of frontend-taglib-clay$clay-button and frontend-taglib-clay$clay-badge do you have in your portal?&lt;br /&gt;&lt;br /&gt;Can you have a look at &lt;a href="http://localhost:8080/o/js_loader_modules"&gt;http://localhost:8080/o/js_loader_modules&lt;/a&gt; and look for it? &lt;br /&gt;&lt;br /&gt;It should match the semantic versioning expresion you have in the imports section of your .npmbundlerrc file...</summary>
    <dc:creator>Iván Zaera Avellón</dc:creator>
    <dc:date>2019-05-14T13:44:23Z</dc:date>
  </entry>
  <entry>
    <title>RE: Liferay NPM Bundler with ReactJS and Clay</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=113620402" />
    <author>
      <name>René Hengstermann</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=113620402</id>
    <updated>2019-05-13T16:41:08Z</updated>
    <published>2019-05-13T16:41:08Z</published>
    <summary type="html">&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;Hello Ivan, &lt;br&gt;&lt;br&gt;thanks again for your feedback. &lt;br&gt;&lt;br&gt;I recreated my module from scratch with the Liferay NPM Bundler, now changing the .npmbundlerrc as you suggested. &lt;br&gt;&lt;br&gt;Now I am able to load my module properly, but now It tells me that the Version of clay which I am referencing is not loaded in the Server: &lt;br&gt;&lt;pre&gt;&lt;code&gt;Liferay AMD Loader: Unhandled failure: Error: The following problems where detected while resolving modules:
Package frontend-taglib-clay$clay-button which is a dependency of planner-test@1.0.0 is not deployed in the server
Package frontend-taglib-clay$clay-badge which is a dependency of planner-test@1.0.0 is not deployed in the server
    at Loader._getResolutionError (combo?browserId=other&amp;amp;amp;minifierType=js&amp;amp;amp;languageId=en_US&amp;amp;amp;b=7110&amp;amp;amp;t=1557762987464&amp;amp;amp;/o/frontend-js-web/jquery/jquery.js&amp;amp;amp;/o/frontend-js-web/clay/popper.js&amp;amp;amp;/o/frontend-js-web/clay/bootstrap.js&amp;amp;amp;/o/frontend-js-web/loader/config.js&amp;amp;amp;/o/frontend-js-web/loader/loader.js&amp;amp;amp;/o/frontend-js-web/aui/aui/aui.js&amp;amp;amp;/o/frontend-js-web/aui/aui-base-html5-shiv/aui-base-html5-shiv.js&amp;amp;amp;/o/frontend-js-web/liferay/browser_selectors.js&amp;amp;amp;/o/frontend-js-web/liferay/modules.js&amp;amp;amp;/o/frontend-js-web/liferay/aui_sandbox.js&amp;amp;amp;/o/frontend-js-web/clay/collapsible-search.js&amp;amp;amp;/o/frontend-js-web/clay/side-navigation.js&amp;amp;amp;/o/frontend-js-web/jquery/fm.js&amp;amp;amp;/o/frontend-js-web/jquery/form.js&amp;amp;amp;/o/frontend-js-web/misc/svg4everybody.js&amp;amp;amp;/o/frontend-js-web/aui/arraylist-add/arraylist-add.js&amp;amp;amp;/o/frontend-js-web/aui/arraylist-filter/arraylist-filter.js&amp;amp;amp;/o/frontend-js-web/aui/arraylist/arraylist.js&amp;amp;amp;/o/frontend-js-web/aui/array-extras/array-extras.js&amp;amp;amp;/o/frontend-js-web/aui/array-invoke/array-invoke.js&amp;amp;amp;/o/frontend-js-web/aui/attribute-base/attribute-base.js&amp;amp;amp;/o/frontend-js-web/aui/attribute-complex/attribute-complex.js&amp;amp;amp;/o/frontend-js-web/aui/attribute-core/attribute-core.js&amp;amp;amp;/o/frontend-js-web/aui/attribute-observable/attribute-observable.js&amp;amp;amp;/o/frontend-js-web/aui/attribute-extras/attribute-extras.js&amp;amp;amp;/o/frontend-js-web/aui/base-base/base-base.js&amp;amp;amp;/o/frontend-js-web/aui/base-pluginhost/base-pluginhost.js&amp;amp;amp;/o/frontend-js-web/aui/classnamemanager/classnamemanager.js&amp;amp;amp;/o/frontend-js-web/aui/datatype-xml-format/datatype-xml-format.js&amp;amp;amp;/o/frontend-js-web/aui/datatype-xml-parse/datatype-xml-parse.js&amp;amp;amp;/o/frontend-js-web/aui/dom-base/dom-base.js&amp;amp;amp;/o/frontend-js-web/aui/dom-core/dom-core.js&amp;amp;amp;/o/frontend-js-web/aui/dom-screen/dom-screen.js&amp;amp;amp;/o/frontend-js-web/aui/dom-style/dom-style.js&amp;amp;amp;/o/frontend-js-web/aui/event-base/event-base.js&amp;amp;amp;/o/frontend-js-web/aui/event-custom-base/event-custom-base.js&amp;amp;amp;/o/frontend-js-web/aui/event-custom-complex/event-custom-complex.js&amp;amp;amp;/o/frontend-js-web/aui/event-delegate/event-delegate.js&amp;amp;amp;/o/frontend-js-web/aui/event-focus/event-focus.js:17425)&lt;/code&gt;&lt;/pre&gt;&lt;/body&gt;&lt;/html&gt;</summary>
    <dc:creator>René Hengstermann</dc:creator>
    <dc:date>2019-05-13T16:41:08Z</dc:date>
  </entry>
  <entry>
    <title>RE: Liferay NPM Bundler with ReactJS and Clay</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=113611813" />
    <author>
      <name>Iván Zaera Avellón</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=113611813</id>
    <updated>2019-05-13T07:40:07Z</updated>
    <published>2019-05-13T07:40:07Z</published>
    <summary type="html">Of course, don&amp;#39;t use a version higher than the one the portal is providing, because it won&amp;#39;t match unless you change the semantic version expression to somehting less restricting.</summary>
    <dc:creator>Iván Zaera Avellón</dc:creator>
    <dc:date>2019-05-13T07:40:07Z</dc:date>
  </entry>
  <entry>
    <title>RE: Liferay NPM Bundler with ReactJS and Clay</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=113611473" />
    <author>
      <name>Iván Zaera Avellón</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=113611473</id>
    <updated>2019-05-13T07:37:19Z</updated>
    <published>2019-05-13T07:37:19Z</published>
    <summary type="html">&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;That is because clay cannot be loaded more than once because it uses SOY under the hood and SOY uses a global namespace :-(. So, even if you use an AMD loader to attain modularity, there's a bottleneck in SOY library because every AMD module shares the same namespace.&lt;br&gt;&lt;br&gt;The solution to fix this is importing clay libraries from the portal instead of providing your own. This has some limitations because you cannot control which version of clay gets loaded as you are delegating that decission to the portal itself. However, because we also use clay in the portal, chances are that it is always up to date.&lt;br&gt;&lt;br&gt;If you want to import clay you need to add the following to your .npmbundlerrc file:&lt;br&gt;&lt;br&gt;&lt;pre&gt;&lt;code&gt;"config": {
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;"imports": {
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;"frontend-taglib-clay": {
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;"clay-alert": "&amp;amp;gt;=2.9.0",
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;"clay-autocomplete": "&amp;amp;gt;=2.9.0",
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;"clay-badge": "&amp;amp;gt;=2.9.0",
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;"clay-button": "&amp;amp;gt;=2.9.0",
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;"clay-card": "&amp;amp;gt;=2.9.0",
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;"clay-card-grid": "&amp;amp;gt;=2.9.0",
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;"clay-checkbox": "&amp;amp;gt;=2.9.0",
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;"clay-collapse": "&amp;amp;gt;=2.9.0",
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;"clay-component": "&amp;amp;gt;=2.9.0",
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;"clay-data-provider": "&amp;amp;gt;=2.9.0",
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;"clay-dataset-display": "&amp;amp;gt;=2.9.0",
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;"clay-dropdown": "&amp;amp;gt;=2.9.0",
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;"clay-icon": "&amp;amp;gt;=2.9.0",
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;"clay-label": "&amp;amp;gt;=2.9.0",
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;"clay-link": "&amp;amp;gt;=2.9.0",
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;"clay-list": "&amp;amp;gt;=2.9.0",
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;"clay-loading-indicator": "&amp;amp;gt;=2.9.0",
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;"clay-management-toolbar": "&amp;amp;gt;=2.9.0",
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;"clay-modal": "&amp;amp;gt;=2.9.0",
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;"clay-multi-select": "&amp;amp;gt;=2.9.0",
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;"clay-navigation-bar": "&amp;amp;gt;=2.9.0",
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;"clay-pagination": "&amp;amp;gt;=2.9.0",
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;"clay-pagination-bar": "&amp;amp;gt;=2.9.0",
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;"clay-portal": "&amp;amp;gt;=2.9.0",
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;"clay-progress-bar": "&amp;amp;gt;=2.9.0",
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;"clay-radio": "&amp;amp;gt;=2.9.0",
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;"clay-select": "&amp;amp;gt;=2.9.0",
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;"clay-sticker": "&amp;amp;gt;=2.9.0",
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;"clay-table": "&amp;amp;gt;=2.9.0",
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;"clay-tooltip": "&amp;amp;gt;=2.9.0"
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;}
}
&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;Note that 2.9.0 should be substituted by the version you are using. It will probably make sense to have the same version you are using in package.json with a &amp;gt;= prepended so that if the portal updates clay your module doesn't break.&lt;br&gt;&lt;br&gt;Currently, portal 7.1 is using these versions of clay -&amp;gt; https://github.com/liferay/liferay-portal/blob/7.1.x/modules/apps/frontend-taglib/frontend-taglib-clay/package.json&lt;br&gt;&lt;br&gt;Hope this helps.&lt;/body&gt;&lt;/html&gt;</summary>
    <dc:creator>Iván Zaera Avellón</dc:creator>
    <dc:date>2019-05-13T07:37:19Z</dc:date>
  </entry>
  <entry>
    <title>RE: Liferay NPM Bundler with ReactJS and Clay</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=113607259" />
    <author>
      <name>René Hengstermann</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=113607259</id>
    <updated>2019-05-12T17:55:12Z</updated>
    <published>2019-05-12T17:55:12Z</published>
    <summary type="html">&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;I changed now the way how I create the app, as described here: https://dev.liferay.com/develop/reference/-/knowledge_base/7-1/the-structure-of-osgi-bundles-containing-npm-packages&lt;br&gt;&lt;br&gt;Now I get errors, that several Clay elements are already defined:&lt;br&gt;&lt;pre&gt;&lt;code&gt;Uncaught Error: Namespace "ClayIcon.incrementaldom" already declared.
&lt;/code&gt;&lt;/pre&gt;Any further thoughts ?&lt;/body&gt;&lt;/html&gt;</summary>
    <dc:creator>René Hengstermann</dc:creator>
    <dc:date>2019-05-12T17:55:12Z</dc:date>
  </entry>
  <entry>
    <title>RE: Liferay NPM Bundler with ReactJS and Clay</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=113598065" />
    <author>
      <name>René Hengstermann</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=113598065</id>
    <updated>2019-05-10T15:13:33Z</updated>
    <published>2019-05-10T15:13:33Z</published>
    <summary type="html">&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;Hello Ivan, &lt;br&gt;&lt;br&gt;thanks for your reply :-)&lt;br&gt;&lt;br&gt;I also discovered that the module thows an exception on deployment:&lt;br&gt;&lt;pre&gt;&lt;code&gt;java.lang.NullPointerException
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; at com.github.yuchi.semver.Version.compareTo(Version.java:158)
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; at com.github.yuchi.semver.Version.compareTo(Version.java:5)
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; at java.util.Comparator.lambda$comparing$77a9974f$1(Comparator.java:469)
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; at java.util.Collections$ReverseComparator2.compare(Collections.java:5178)
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; at java.util.TimSort.binarySort(TimSort.java:296)
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; at java.util.TimSort.sort(TimSort.java:239)
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; at java.util.Arrays.sort(Arrays.java:1512)
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; at java.util.ArrayList.sort(ArrayList.java:1460)
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; at com.liferay.frontend.js.loader.modules.extender.internal.npm.NPMRegistryImpl._refreshJSModuleCaches(NPMRegistryImpl.java:341)
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; at com.liferay.frontend.js.loader.modules.extender.internal.npm.NPMRegistryImpl._processBundle(NPMRegistryImpl.java:279)
&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;For some reason one of the js packages inside of my module has a empty version number. &lt;br&gt;&lt;br&gt;Strangely this module seems to contain my index.js (which is the main entrance point of my application), but without the version of my module.&lt;/body&gt;&lt;/html&gt;</summary>
    <dc:creator>René Hengstermann</dc:creator>
    <dc:date>2019-05-10T15:13:33Z</dc:date>
  </entry>
  <entry>
    <title>RE: Liferay NPM Bundler with ReactJS and Clay</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=113593146" />
    <author>
      <name>Iván Zaera Avellón</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=113593146</id>
    <updated>2019-05-10T10:54:12Z</updated>
    <published>2019-05-10T10:54:12Z</published>
    <summary type="html">Looks like there&amp;#39;s an issue with your &amp;#34;com.liferay.frontend.js.spa.web&amp;#34; bundle because, looking at the stack trace, &lt;a href="https://github.com/liferay/liferay-portal-ee/blob/7.1.x/modules/apps/frontend-js/frontend-js-spa-web/src/main/java/com/liferay/frontend/js/spa/web/internal/servlet/taglib/SPATopHeadJSPDynamicInclude.java#L103"&gt;this call&lt;/a&gt;  is failing because &lt;a href="https://github.com/liferay/liferay-portal-ee/blob/7.1.x/modules/apps/frontend-js/frontend-js-loader-modules-extender/src/main/java/com/liferay/frontend/js/loader/modules/extender/internal/npm/NPMResolverImpl.java#L83"&gt;this code&lt;/a&gt; is throwing a NPE.&lt;br /&gt;&lt;br /&gt;That is probably caused by the NPMRegistry not knowing anything about the frontend-js-spa-web bundle.&lt;br /&gt;&lt;br /&gt;Said that, I have no idea of what could be causing this. There may be a variety of reasons.&lt;br /&gt;&lt;br /&gt;Have you had a look at &lt;a href="http://localhost:8080/o/js_loader_modules"&gt;http://localhost:8080/o/js_loader_modules&lt;/a&gt; ? Maybe you can see there if there&amp;#39;s something wrong with frontend-js-spa-web...</summary>
    <dc:creator>Iván Zaera Avellón</dc:creator>
    <dc:date>2019-05-10T10:54:12Z</dc:date>
  </entry>
  <entry>
    <title>Liferay NPM Bundler with ReactJS and Clay</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=113591197" />
    <author>
      <name>René Hengstermann</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=113591197</id>
    <updated>2019-05-10T08:05:31Z</updated>
    <published>2019-05-10T08:05:31Z</published>
    <summary type="html">&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;Hello Community,&lt;br&gt;&lt;br&gt;I like to use the Liferay NPM Bundler with the Clay web components to make use of the prebuild components in Clay as well as ReactJS for fast dom traversal and loading, as described here: https://github.com/liferay/clay/tree/2.x/examples/react-with-clay&lt;br&gt;&lt;br&gt;If I start my React app standalone 'npm run start' the clay components are visible and actionable.&lt;br&gt;&lt;br&gt;The Versions of the components I am using are:&lt;ul style="list-style: disc outside;"&gt;&lt;li&gt;Liferay 7.1&lt;/li&gt;&lt;li&gt;Clay 2.14.2&lt;/li&gt;&lt;li&gt;React 16.3.2&lt;/li&gt;&lt;li&gt;NPM Bundler 2.6.2&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;If I run 'npm deploy' to bundle an OSGI bundle and deploy it to Liferay, I get two errors:&lt;br&gt;&lt;br&gt;&lt;strong&gt;Bowser JS Console:&lt;/strong&gt; see attached file "Error-JS-Console.png"&lt;br&gt;&lt;br&gt;In the Liferay logs I am seeing a corresponding errors of the NPMPackageResolver: &lt;br&gt;&lt;pre&gt;&lt;code&gt;07:58:29,797 ERROR [http-nio-8080-exec-5][DynamicIncludeUtil:79] java.lang.NullPointerException
java.lang.NullPointerException
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; at com.liferay.frontend.js.loader.modules.extender.internal.npm.NPMResolverImpl.resolveModuleName(NPMResolverImpl.java:83)
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; at com.liferay.frontend.js.spa.web.internal.servlet.taglib.SPATopHeadJSPDynamicInclude.include(SPATopHeadJSPDynamicInclude.java:103)
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; at com.liferay.portal.kernel.servlet.taglib.DynamicIncludeUtil.include(DynamicIncludeUtil.java:76)
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; at com.liferay.taglib.util.DynamicIncludeTag.doEndTag(DynamicIncludeTag.java:32)
...
07:58:31,431 ERROR [http-nio-8080-exec-1][ComboServlet:90] java.lang.IllegalArgumentException: Path [metal-dom/src/all/dom.js] does not start with a "/" character
java.lang.IllegalArgumentException: Path [metal-dom/src/all/dom.js] does not start with a "/" character
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; at org.apache.catalina.core.ApplicationContext.getRequestDispatcher(ApplicationContext.java:404)
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; at org.apache.catalina.core.ApplicationContextFacade.getRequestDispatcher(ApplicationContextFacade.java:222)
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; at com.liferay.portal.servlet.ComboServlet.getResourceRequestDispatcher(ComboServlet.java:429)
...

&lt;/code&gt;&lt;/pre&gt;&lt;br&gt;Has any one a hint on how to investigate this error further ?&lt;br&gt;&lt;br&gt;Thank you,&lt;br&gt;Rene&lt;/body&gt;&lt;/html&gt;</summary>
    <dc:creator>René Hengstermann</dc:creator>
    <dc:date>2019-05-10T08:05:31Z</dc:date>
  </entry>
</feed>
