ERR_MODULE_NOT_FOUND when scanning TS code using dotnet scanner in Gitlab-CI pipeline

Our application has a dotnet backend and typescript frontend.
I recently tried to extend the sonar scanner in our gitlab pipeline to scan the whole project instead of only the backend.

The relevant steps in the gitlab-ci.yml look like this:

sonarqube-check:
  stage: build_and_test
  image: mcr.microsoft.com/dotnet/sdk:8.0
  variables:
    SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar"
    GIT_DEPTH: "0"
  cache:
    key: "${CI_JOB_NAME}"
    paths:
      - .sonar/cache
  script:
    - "apt-get update"
    - "apt-get install --yes openjdk-17-jre"
    - "dotnet tool install --global dotnet-sonarscanner"
    - "dotnet tool install --global dotnet-coverage"
    - 'export PATH="$PATH:$HOME/.dotnet/tools"'
    - "dotnet sonarscanner begin /k:\"$PROJECT_KEY\" /d:sonar.token=\"$SONAR_TOKEN\" /d:\"sonar.host.url=$SONAR_HOST_URL\" /d:sonar.cs.vscoveragexml.reportsPaths=coverage.xml /d:sonar.scanner.scanAll=true /d:sonar.verbose=true "
    - "dotnet build Backend"
    - 'dotnet-coverage collect "dotnet test Backend" -f xml -o "coverage.xml"'
    - 'dotnet sonarscanner end /d:sonar.token="$SONAR_TOKEN"'
  allow_failure: true

This worked well for the backend but when it tries to analyse the frontend it throws a [ERR_MODULE_NOT_FOUND] error. I do not have any idea what might be causing this so maybe this is a bug with the scanner. As the debug logs mention custom rules it might be relevant that we are not using any custom rules or eslint or anything for the frontend.

Is this an error on sonar side or do i need to change something in my setup to get the typescript analysis to work?

Here are the logs (starting from where it analyses the TS code)


16:01:56.840 INFO: Sensor JavaScript/TypeScript analysis [javascript]
16:01:56.843 DEBUG: Deploying the bridge server into /myProject/.sonarqube/out/.sonar/.sonartmp/bridge-bundle
16:01:57.054 DEBUG: Setting deploy location to /myProject/.sonarqube/out/.sonar/.sonartmp/bridge-bundle
16:01:57.054 INFO: Detected os: Linux arch: amd64 alpine: false. Platform: LINUX_X64
16:01:57.055 INFO: Deploy location /myProject/.sonar/js/node-runtime, tagetRuntime: /myProject/.sonar/js/node-runtime/node,  version: /myProject/.sonar/js/node-runtime/version.txt
16:01:57.055 DEBUG: Lock acquired for extraction
16:01:57.060 DEBUG: Extracting embedded node to /myProject/.sonar/js/node-runtime/node
16:02:00.763 DEBUG: Launching command /myProject/.sonar/js/node-runtime/node -v
16:02:00.778 DEBUG: Deployed node version v22.11.0
16:02:00.779 DEBUG: Deploying custom rules bundle jar:file:/myProject/.sonar/cache/b338eadb521459994fb1ad6eed934ad2/sonar-ecocodejavascript-plugin.jar!/ecocode-eslint-plugin.tgz to /myProject/.sonarqube/out/.sonar/.sonartmp/bridge-bundle/package/custom-rules15773664744655167989
16:02:00.782 DEBUG: Starting server
16:02:00.784 DEBUG: Creating Node.js process to start the bridge server on port 36265 
16:02:00.786 INFO: Using embedded Node.js runtime.
16:02:00.786 INFO: Using Node.js executable: '/myProject/.sonar/js/node-runtime/node'.
16:02:00.786 DEBUG: Checking Node.js version
16:02:00.786 DEBUG: Launching command /myProject/.sonar/js/node-runtime/node -v
16:02:00.800 DEBUG: Using Node.js v22.11.0.
16:02:00.800 DEBUG: Launching command /myProject/.sonar/js/node-runtime/node /myProject/.sonarqube/out/.sonar/.sonartmp/bridge-bundle/package/bin/server.cjs 36265 127.0.0.1 /myProject/.sonarqube/out/.sonar true false false /myProject/.sonarqube/out/.sonar/.sonartmp/bridge-bundle/package/custom-rules15773664744655167989/package/dist/rules.js
16:02:02.880 INFO: Memory configuration: OS (257542 MB), Node.js (4144 MB).
16:02:02.881 DEBUG: Starting the bridge server
16:02:02.891 DEBUG: The bridge server is listening on port 36265
16:02:02.921 DEBUG: The worker thread is running
16:02:02.970 DEBUG: Bridge server started on port 36265 in 2188 ms
16:02:02.971 DEBUG: Analysis of unchanged files will not be skipped (current analysis requires all files to be analyzed)
16:02:04.983 DEBUG: Initializing linter "default" with S4790,S6850,S2251,S6853,S6851,S6852,S2137,S2259,S5527,S930,S6859,S2814,S1848,S1607,S2819,S3330,S6842,S6843,S6840,S2486,S2123,S3696,S4423,S6841,S2245,S6846,S2004,S6847,S3699,S5876,S6844,S3579,S5757,S6845,S4426,S5759,S6848,S6035,S6275,S5860,S6397,S2234,S3686,S5863,S2598,S6836,S6957,S5868,S1940,S5869,S6958,S6959,S1135,S1134,S6281,S6265,S5730,S6821,S5850,S5732,S6268,S5973,S5852,S3796,S6824,S5734,S4524,S6825,S125,S6822,S128,S5736,S3799,S2589,S6823,S5856,S6827,S5739,S6270,S1264,S1143,S1481,S2692,S3782,S5842,S3785,S4634,S5843,S6811,S6019,S2699,S5604,S5725,S5728,S1119,S6819,S4084,S6486,S2681,S1472,S6249,S3531,S2201,S2685,S4502,S3776,S2688,S4624,S3415,S1479,S5958,S6807,S4507,S1128,S1126,S1125,S1121,S6252,S5042,S5264,S6594,S6353,S6479,S2430,S2310,S6477,S5148,S2432,S6478,S3403,S1219,S4619,S6481,S4043,S5254,S4165,S5257,S5256,S2301,S4721,S3516,S1226,S5260,S6351,S6332,S6333,S6330,S5122,S4275,S6331,S4036,S3981,S4830,S5247,S4158,S3984,S3863,S3500,S3504,S3626,S1314,S1313,S6582,S6442,S6321,S6443,S4144,S6440,S6441,S4143,S6325,S6326,S6323,S6324,S3972,S6329,S3854,S6327,S6328,S4822,S3735,S3616,S1439,S1321,S2092,S4030,S2094,S6671,S6551,S6793,S878,S2077,S6435,S2990,S6557,S2870,S2871,S6676,S6439,S4138,S6319,S6679,S6438,S2755,S6317,S1788,S2757,S2999,S2639,S4140,S5693,S6660,S5332,S6661,S2187,S6666,S6303,S6788,S888,S4123,S2068,S2189,S6544,S6302,S4125,S6308,S6789,S6426,S1533,S1534,S3834,S1656,S1536,S1301,S6790,S6791,S6772,S1082,S6770,S6650,S6534,S5443,S6535,S6774,S6653,S2970,S6775,S6654,S5689,S6418,S1763,S1764,S6657,S1523,S2612,S2737,S1527,S1529,S1199,S1077,S5691,S6761,S7059,S1090,S905,S6644,S6523,S108,S6645,S107,S6766,S6763,S6643,S6522,S1871,S1751,S1994,S6767,S1874,S6647,S3812,S1515,S101,S1516,S7060,S6092,S6750,S6079,S2392,S6754,S3001,S5542,S6637,S5547,S6638,S1862,S6756,S6635,S6757,S3800,S3923,S6080,S6861,S6747,S6748,S3358,S6627,S5659,S6746,S6509,S1854,S6749,S2703,S1068,S1186,S125,S128,S1940,S5869,S6958,S6959,S2598,S6957,S6836,S5868,S2234,S5863,S6397,S6275,S1264,S1143,S5860,S6035,S6270,S6606,S5759,S6848,S6846,S2004,S6847,S5876,S3699,S6844,S3579,S6845,S5757,S4426,S6842,S6843,S6840,S2486,S2123,S3696,S4423,S6841,S2245,S4782,S3330,S6281,S2819,S1607,S1848,S2933,S6859,S2137,S5527,S6853,S6851,S6852,S6850,S4790,S2251,S6749,S6509,S6747,S6748,S4325,S3358,S6627,S5659,S6746,S1854,S4322,S4323,S6861,S4619,S1226,S6478,S2430,S6598,S6477,S2310,S5148,S6479,S5264,S6353,S6594,S5260,S6590,S6351,S1479,S5958,S6807,S4507,S4502,S4623,S1119,S3776,S2688,S3415,S4624,S3531,S6249,S4621,S2685,S2201,S2681,S1472,S6486,S6481,S6819,S1125,S5728,S4634,S6019,S5843,S6811,S2699,S5604,S5725,S1128,S5842,S1121,S2692,S6252,S5042,S6827,S5739,S1135,S6824,S5734,S4524,S6825,S6822,S5736,S2589,S3799,S6823,S5856,S5730,S6821,S6268,S5850,S5732,S5973,S5852,S1134,S6265,S4084,S2639,S2999,S2757,S1301,S6438,S6317,S4138,S6679,S6319,S6439,S2755,S1788,S2990,S2077,S2870,S6557,S2871,S6676,S6435,S6551,S6550,S6671,S6793,S6790,S878,S6791,S3735,S1314,S1313,S3616,S1439,S6328,S6569,S6327,S3854,S4822,S6329,S6324,S6565,S6323,S6568,S6326,S6325,S3972,S6441,S6440,S6564,S4144,S6443,S4143,S6442,S6321,S888,S4140,S3504,S3626,S1444,S3984,S3863,S4036,S4156,S3981,S4830,S6578,S4158,S5247,S6331,S6572,S6330,S6333,S5122,S6332,S4275,S2092,S6571,S4030,S2094,S3516,S1219,S2301,S4721,S5257,S5256,S4043,S6583,S4165,S5254,S6582,S3923,S1862,S6637,S5547,S6638,S6759,S6756,S6635,S6757,S6754,S3001,S5542,S4335,S6750,S1068,S2392,S1186,S6079,S3812,S1874,S1994,S1751,S1516,S1515,S6767,S6647,S6522,S6644,S6766,S6763,S6643,S6523,S6761,S1871,S7059,S1199,S1077,S6080,S1529,S101,S1523,S1764,S1763,S2737,S5689,S6418,S6657,S2612,S5443,S6653,S6535,S2970,S6654,S6534,S6775,S6772,S6770,S6650,S1082,S6092,S7060,S1534,S1533,S6426,S6789,S6308,S1656,S6544,S4124,S2187,S6666,S6302,S6788,S4123,S2068,S6303,S5693,S6660,S5332,S6661,S108,S107,S5691,S1090,S905
16:02:04.990 ERROR: Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/myProject/.sonarqube/out/.sonar/.sonartmp/bridge-bundle/package/custom-rules15773664744655167989/package/dist/rules.js' imported from /myProject/.sonarqube/out/.sonar/.sonartmp/bridge-bundle/package/bin/server.cjs
16:02:04.990 ERROR:     at finalizeResolution (node:internal/modules/esm/resolve:257:11)
16:02:04.990 ERROR:     at moduleResolve (node:internal/modules/esm/resolve:913:10)
16:02:04.990 ERROR:     at defaultResolve (node:internal/modules/esm/resolve:1037:11)
16:02:04.990 ERROR:     at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:650:12)
16:02:04.990 ERROR:     at #cachedDefaultResolve (node:internal/modules/esm/loader:599:25)
16:02:04.990 ERROR:     at ModuleLoader.resolve (node:internal/modules/esm/loader:582:38)
16:02:04.990 ERROR:     at ModuleLoader.getModuleJobForImport (node:internal/modules/esm/loader:241:38)
16:02:04.990 ERROR:     at onImport.tracePromise.__proto__ (node:internal/modules/esm/loader:542:36)
16:02:04.990 ERROR:     at TracingChannel.tracePromise (node:diagnostics_channel:337:14)
16:02:04.990 ERROR:     at ModuleLoader.import (node:internal/modules/esm/loader:541:21)
16:02:05.000 ERROR: Failure during analysis
java.lang.IllegalStateException: Failed to initialize linter
	at org.sonar.plugins.javascript.bridge.BridgeServerImpl.initLinter(BridgeServerImpl.java:392)
	at org.sonar.plugins.javascript.bridge.BridgeServerImpl.initLinter(BridgeServerImpl.java:358)
	at org.sonar.plugins.javascript.analysis.JsTsSensor.analyzeFiles(JsTsSensor.java:72)
	at org.sonar.plugins.javascript.analysis.AbstractBridgeSensor.execute(AbstractBridgeSensor.java:71)
	at org.sonar.scanner.sensor.AbstractSensorWrapper.analyse(AbstractSensorWrapper.java:64)
	at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:88)
	at org.sonar.scanner.sensor.ModuleSensorsExecutor.lambda$execute$1(ModuleSensorsExecutor.java:61)
	at org.sonar.scanner.sensor.ModuleSensorsExecutor.withModuleStrategy(ModuleSensorsExecutor.java:79)
	at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:61)
	at org.sonar.scanner.scan.SpringModuleScanContainer.doAfterStart(SpringModuleScanContainer.java:82)
	at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:226)
	at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:205)
	at org.sonar.scanner.scan.SpringProjectScanContainer.scan(SpringProjectScanContainer.java:201)
	at org.sonar.scanner.scan.SpringProjectScanContainer.scanRecursively(SpringProjectScanContainer.java:197)
	at org.sonar.scanner.scan.SpringProjectScanContainer.doAfterStart(SpringProjectScanContainer.java:170)
	at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:226)
	at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:205)
	at org.sonar.scanner.bootstrap.SpringScannerContainer.doAfterStart(SpringScannerContainer.java:356)
	at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:226)
	at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:205)
	at org.sonar.scanner.bootstrap.SpringGlobalContainer.doAfterStart(SpringGlobalContainer.java:142)
	at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:226)
	at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:205)
	at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:73)
	at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:67)
	at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
	at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
	at jdk.proxy1/jdk.proxy1.$Proxy0.execute(Unknown Source)
	at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:189)
	at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:138)
	at org.sonarsource.scanner.cli.Main.execute(Main.java:126)
	at org.sonarsource.scanner.cli.Main.execute(Main.java:81)
	at org.sonarsource.scanner.cli.Main.main(Main.java:62)
16:02:05.001 INFO: Hit the cache for 0 out of 0
16:02:05.003 INFO: Miss the cache for 0 out of 0
16:02:05.013 DEBUG: Shutting down the worker
16:02:05.014 INFO: Rule | Time (ms) | Relative
16:02:05.014 INFO: :----|----------:|--------:
16:02:05.039 DEBUG: The worker thread exited with code 0
16:02:05.044 DEBUG: The bridge server shut down
16:02:05.045 INFO: Rule | Time (ms) | Relative
16:02:05.045 INFO: :----|----------:|--------:
16:02:05.126 INFO: ------------------------------------------------------------------------
16:02:05.126 INFO: EXECUTION FAILURE
16:02:05.126 INFO: ------------------------------------------------------------------------
16:02:05.126 INFO: Total time: 23.748s
16:02:05.257 INFO: Final Memory: 32M/224M
16:02:05.257 INFO: ------------------------------------------------------------------------
16:02:05.257 ERROR: Error during SonarScanner execution
java.lang.IllegalStateException: Analysis of JS/TS files failed
	at org.sonar.plugins.javascript.analysis.AbstractBridgeSensor.execute(AbstractBridgeSensor.java:96)
	at org.sonar.scanner.sensor.AbstractSensorWrapper.analyse(AbstractSensorWrapper.java:64)
	at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:88)
	at org.sonar.scanner.sensor.ModuleSensorsExecutor.lambda$execute$1(ModuleSensorsExecutor.java:61)
	at org.sonar.scanner.sensor.ModuleSensorsExecutor.withModuleStrategy(ModuleSensorsExecutor.java:79)
	at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:61)
	at org.sonar.scanner.scan.SpringModuleScanContainer.doAfterStart(SpringModuleScanContainer.java:82)
	at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:226)
	at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:205)
	at org.sonar.scanner.scan.SpringProjectScanContainer.scan(SpringProjectScanContainer.java:201)
	at org.sonar.scanner.scan.SpringProjectScanContainer.scanRecursively(SpringProjectScanContainer.java:197)
	at org.sonar.scanner.scan.SpringProjectScanContainer.doAfterStart(SpringProjectScanContainer.java:170)
	at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:226)
	at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:205)
	at org.sonar.scanner.bootstrap.SpringScannerContainer.doAfterStart(SpringScannerContainer.java:356)
	at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:226)
	at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:205)
	at org.sonar.scanner.bootstrap.SpringGlobalContainer.doAfterStart(SpringGlobalContainer.java:142)
	at org.sonar.core.platform.SpringComponentContainer.startComponents(SpringComponentContainer.java:226)
	at org.sonar.core.platform.SpringComponentContainer.execute(SpringComponentContainer.java:205)
	at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:73)
	at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:67)
	at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
	at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
	at jdk.proxy1/jdk.proxy1.$Proxy0.execute(Unknown Source)
	at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:189)
	at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:138)
	at org.sonarsource.scanner.cli.Main.execute(Main.java:126)
	at org.sonarsource.scanner.cli.Main.execute(Main.java:81)
	at org.sonarsource.scanner.cli.Main.main(Main.java:62)
Caused by: java.lang.IllegalStateException: Failed to initialize linter
	at org.sonar.plugins.javascript.bridge.BridgeServerImpl.initLinter(BridgeServerImpl.java:392)
	at org.sonar.plugins.javascript.bridge.BridgeServerImpl.initLinter(BridgeServerImpl.java:358)
	at org.sonar.plugins.javascript.analysis.JsTsSensor.analyzeFiles(JsTsSensor.java:72)
	at org.sonar.plugins.javascript.analysis.AbstractBridgeSensor.execute(AbstractBridgeSensor.java:71)
	... 33 more
16:02:05.263 DEBUG: Cleanup org.eclipse.jgit.util.FS$FileStoreAttributes$$Lambda$461/0x00007f5cb831c800@6c796cc1 during JVM shutdown
Process returned exit code 1
The SonarScanner did not complete successfully

Hi,

Welcome to the community!

What version of SonarQube are you using?

 
Thx,
Ann

Hi Ann,

We are currently using the SonarQube Community Build v25.1.0.102122.

Regards,
Niklas

Hi Niklas,

Thanks for that. (Note that 25.2 is available :smiley: )

Just to dot the i’s can you provide a list of the plugins (if any) that you have loaded?

 
Thx,
Ann

Hi Ann,

Sorry, i forgot to answer to this. As the SonarQube is managed by my org im not sure if i have assess to the plugins. Im not aware that we are using any but i could be wrong.

Regards,
Niklas

Hi,

After a closer look at your log file:

It looks like you’re using one of the EcoCode plugins. Can you make sure that’s updated to the latest version - they’ve rebranded to Creedengo - and retry?

 
Thx,
Ann