volume_up

A critical vulnerability was discovered in React Server Components (Next.js). Our systems remain protected but we advise to update packages to newest version. Learn More

volume_up

A critical vulnerability was discovered in React Server Components (Next.js). Our systems remain protected but we advise to update packages to newest version. Learn More

404 error / blank edit mode - Dojo class is missing after deployment to Integration (DXP hosting), locally works

I've implemented an editor descriptor and created dojo class: CustomLinkItemModel.js. Locally everything works, but after deployment to Integration, an edit mode is blank for this block and I've noticed this error in the console: GET https://....com/ClientResources/Scripts/CustomLinkItemModel.js 404. I've also noticed that this js file wasn't be added to relaese package before hosting on DXP.

1) The module.config is located in the root directory (projectName.web) and looks like this:

2) Files structure:


3) The editor descriptor includes a following line:
 ItemModelType = "projectName/CustomLinkItemModel"

4) The CustomLinkItemModel.js looks like this:

Anybody knows what might be wrong or maybe what is missing?

#294437
Edited, Jan 10, 2023 21:38

This could be caused by case-sensitive URL processing in Linux environment.

Add RouteOptions to Startup.cs:

services.Configure(o => { o.LowercaseUrls = true; });

 

#294478
Jan 11, 2023 0:23
Aneta Petryla - Jan 11, 2023 8:51
It didn't help ;) I've noticed that this file wasn't appended to release package after building in Azure DevOps, maybe structure with ClientResource dictionary is wrong (module.config is included)?

Any other option why it doesn't exist in the build package (maybe it is the reason of 404 error)? Because locally I have correct structure of ClientResources and the script exists

#294486
Jan 11, 2023 13:27
Vote:

@Aneta, in our solution we hold these resources within the wwwroot i.e. 

Our module.config looks like this 

<?xml version="1.0" encoding="utf-8"?>
<module clientResourceRelativePath="2.0" loadFromBin="false">
  <assemblies>
    <!-- The assembly containing the rest store needs to be added. -->
    <add assembly="Redacted.Cms" />
  </assemblies>
  <routes>
    <route url="{moduleArea}/{controller}/{action}/">
      <defaults>
        <add key="moduleArea" value="Redacted.Cms" />
        <add key="controller" value="" />
        <add key="action" value="Index" />
      </defaults>
    </route>
  </routes>
  <dojo>
    <paths>
      <add name="Redacted" path="~/ClientResources/Scripts" />
    </paths>
  </dojo>
  <clientModule initializer="Redacted/ModuleInitializer">
    <moduleDependencies>
      <add dependency="Shell" />
      <add dependency="CMS" type="RunAfter" />
    </moduleDependencies>
  </clientModule>
  <clientResources>
    <!-- Inject our custom Display Option selector -->
    <add name="epi-cms.widgets.base" path="~/ClientResources/Scripts/widget/DisplayOptionSelector.js" resourceType="Script"/>
  </clientResources>
</module>

And in Project file have the following 

  <ItemGroup>
    <Content Update="module.config">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
  </ItemGroup>

Would be worth checking the 3 things over in your solution 

#294489
Edited, Jan 11, 2023 13:37
Aneta Petryla - Jan 11, 2023 13:42
I've just done it: moving it under wwwroot and now I'm waiting for build (probably it should help). Come back with answer :)
Minesh Shah (Netcel) - Jan 11, 2023 13:45
@Aneta Petryla
Ensure you also have the CopyToOutputDirectory set to Always as well in your project file
Aneta Petryla - Jan 11, 2023 15:05
Ok, and what is ModuleInitializer.js, is it needed also to every sojo script run correctly?
Minesh Shah (Netcel) - Jan 11, 2023 15:57
I don't believe you will need this, it was specifically for registering the display option rest store

https://marisks.net/2016/08/08/registering-multiple-dojo-modules/
Aneta Petryla - Jan 11, 2023 21:51
I've needed to restart the app on Integration. Everything is working now! Only moving ClientResources under wwwroot has helped :) Thanks a lot
error This topic was created over six months ago and has been resolved. If you have a similar question, please create a new topic and refer to this one.
* You are NOT allowed to include any hyperlinks in the post because your account hasn't associated to your company. User profile should be updated.