6

I am wondering whether Salesforce recently updated their lightning library outside of a release window - is there any way to verify the currently loaded version of aura/lightning?

Was led to asking this because I am facing two issues presently;

  • It seems that having any custom 'rerender' method breaks the aura rendering cycle, getting this error message in my package org:

This page has an error. You might just need to refresh it. rerender threw an error in 'markup://WSONE:svgIcon' [Access denied: {"$from$":{"namespace":"WSONE"}}] Failing descriptor: {markup://WSONE:svgIcon}

Versus in my development environment:

This page has an error. You might just need to refresh it. rerender threw an error in 'markup://c:svgIcon' [Access denied: {"Go":{"namespace":"c"}}] Failing descriptor: {markup://c:svgIcon}

  • The second thing is that in some cases, at least for pages that did not exist previously in the package org, I receive a JSON parsing error which seems internal to the framework:

VM17613:957 Uncaught SyntaxError: Unexpected token u in JSON at position 38441

Which occurs on "xhr.onreadystatechange" in lightning.out.delegate.js

Corresponding JSON line which errors out;

"code":function(cmp, fn) { return fn.add("slds-button slds-button--brand slds-path__mark-complete slds-no-flex slds-m-horizontal--small ",cmp.get("v.backCss")); },

Which corresponds to the following component definition line - if I remove that everything works as expected.

<button class="{!'slds-button slds-button--brand slds-path__mark-complete slds-no-flex slds-m-horizontal--small ' + v.backCss}" onclick="{!c.handlePreviousClick}">

If I remove that line it moves on to the next line where I use a composite expression - then the next and so forth - it seems to be a general problem with string concatenation because if I change like this the problem remains;

<button class="{!concat('slds-button slds-button--brand slds-path__mark-complete slds-no-flex slds-m-horizontal--small ', v.backCss)}" onclick="{!c.handlePreviousClick}">

However if I remove the concatenation all together it works just fine - my old components still seem to function mostly while they use concatenation as well...

Anybody have any clues what is going on here? I will try to mess around with different API versions of files now to see if that will make any difference - the new ones are v38.0 (but equal on the development org!) while old are 37.0.

7

Known issue with custom rerender methods - fix is in progress and currently targeted for Winter'17 .12 patch early next week. If you deactivate Locker service until the fix comes out this problem should go away. This issue is being tracked by bug W-3434017 if you want to reference that in any cases or discussion with support.

I do not know about the unexpected token issue.

  • 4
    Is there any page outlining the (minor) patch release notes and known problems? I've faced multiple issues with lightning which were seemingly appearing and disappearing over the past months but am not even aware of such a page... – Koen Faro Oct 27 '16 at 18:39
  • Check out success.salesforce.com/issues_index – Kevin Venkiteswaran Oct 31 '16 at 18:28
1

Update

It seems this wasn't as bad as I assumed; if I call the component using the package org namespace in the TestApp things work fine - I would however expect a compile or reasonable error - rather than JSON.parse() flipping out on me.

Hereby an example of the second case, which is broken if you would currently deploy this code;

TestComponent.cmp

<aura:component>
    <aura:attribute name="testAttr" type="String" default=""></aura:attribute>
    <button class="{!'blaa' + v.testAttr}"></button>
</aura:component>

TestApp.app

<aura:application extends="ltng:outApp" >
    <aura:dependency resource="c:TestComponent" />
</aura:application>

TestApp.vfp

<apex:page docType="html-5.0">
    <div id="lightning"></div>
    <apex:includeLightning />    
     <script type="text/javascript">
        $Lightning.use("c:TestApp", function() {
          $Lightning.createComponent("c:TestComponent",
          {},
          "lightning",
          function(cmp) {
          console.log('all done!');
      });
    });
    </script>
</apex:page>

The Result

enter image description here

enter image description here

0

In your .app file you need to specify access="global" if you are including the app and components in a managed package. This should solve the JS unexpected token issue. Hope that helps.

<aura:application access="global" extends="ltng:outApp" >

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.