UI5 / UI5/cli

UI5 CLI 4.0 specification is incompatible with web workers

Open
#1,276 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

help provided
Dominant language
JavaScript
Stars
511
Forks
83
Avg merge
1d 5h
Merged PRs (30d)
55

Description

For UI5 projects utilizing web workers, the new restriction on "JavaScript Files Requiring Top Level Scope" in specification 4.0 renders the projects incompatible with the UI5 CLI build.

The problem is that a web worker script cannot be wrapped in a sap.ui.require or sap.ui.define function call since it is neither possible nor desirable to load the UI5 framework within a worker. The worker's driver scripts, by definition, run code in the global context, which the new specification prohibits.

Expected Behavior

Build completes successfully as in the previous specification versions.

Current Behavior

Builds fail with error error lbt:bundle:Builder Module {...redacted...}/SomeWorker.js requires top level scope and can only be embedded as a string (requires 'eval'), which is not supported with specVersion 4.0 and higher. For more information, see the UI5 Tooling documentation https://sap.github.io/ui5-tooling/stable/pages/Builder/#javascript-files-requiring-top-level-scope

Steps to Reproduce the Issue

  1. Create a UI5 library
  2. Add a script "MyWorker.js" somewhere in the package tree
  3. Add text console.log("hello worker!") as file contents
  4. Run ui5 build
  5. Note build failure on the MyWorker.js file.

Context

  • UI5 Module Version (output of ui5 --version when using the CLI): 4.0.6
  • Node.js Version: 20.11.0
  • npm Version: 10.2.4
  • OS/Platform: MacOS
  • Browser (if relevant): N/A
  • Other information regarding your environment (optional): nothing

Log Output / Stack Trace

{...}

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the failure with a UI5 library containing MyWorker.js and ui5 build, using the reported specVersion 4.0.6 environment. Read the Builder documentation on JavaScript files requiring top-level scope and compare the error with the expected behavior. Done means a web worker script builds successfully under specification 4.0 without loading the UI5 framework in the worker.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, node.js
Domain
build-system, cli
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.