title: SonarQube: Typescript module not found
body: <p>I am using <code>SonarQube</code> to analyze a <code>Typescript</code> project.</p>
  <p>Analysis runs in a <code>Gitlab</code> pipeline stage, using a docker image with <code>sonar-scanner</code>.</p>
  <p>Here is some output:</p>
  <pre><code>INFO: Download sonar-flex-plugin-2.3.jar
  INFO: Download sonar-gitlab-plugin-2.1.0.jar
  INFO: Download sonar-auth-gitlab-plugin-1.2.2.jar
  INFO: Download sonar-csharp-plugin-6.6.0.3969.jar
  INFO: Download sonar-javascript-plugin-3.3.0.5702.jar
  INFO: Download sonar-java-plugin-4.15.0.12310.jar
  INFO: Download sonar-php-plugin-2.12.0.2871.jar
  INFO: Download sonar-python-plugin-1.8.0.1496.jar
  INFO: Download sonar-scm-git-plugin-1.3.0.869.jar
  INFO: Download sonar-scm-svn-plugin-1.6.0.860.jar
  INFO: Download sonar-typescript-plugin-1.2.0.1484.jar
  INFO: Download sonar-xml-plugin-1.4.3.1027.jar
  INFO: SonarQube server 6.7.0
  INFO: Default locale: &quot;en&quot;, source code encoding: &quot;UTF-8&quot; (analysis is platform dependent)
  INFO: Process project properties
  INFO: Load project repositories
  WARN: Project doesn't exist on the server. All issues will be marked as 'new'.
  INFO: Load project repositories (done) | time=10ms
  INFO: GlobalWorkingDir null
  INFO: Scanning only changed files
  INFO: Execute project builders
  INFO: Execute project builders (done) | time=498ms
  INFO: Load quality profiles
  INFO: Load quality profiles (done) | time=26ms
  INFO: Load active rules
  INFO: Load active rules (done) | time=310ms
  INFO: Load metrics repository
  INFO: Load metrics repository (done) | time=16ms
  INFO: Project key: ELS_UI
  INFO: -------------  Scan ELS_UI
  INFO: Load server rules
  INFO: Load server rules (done) | time=37ms
  INFO: Base dir: /builds/pkaramol/projectname
  INFO: Working dir: /builds/pkara/projectname/.scannerwork
  INFO: Source paths: app/components
  INFO: Source encoding: UTF-8, default locale: en
  WARN: Property 'sonar.php.file.suffixes' is not declared as multi-values/property set but was read using 'getStringArray' method. The SonarQube plugin declaring this property should be updated.
  INFO: Index files
  INFO: 268 files indexed
  INFO: Quality profile for ts: Sonar way
  INFO: Sensor SonarJavaXmlFileSensor [java]
  INFO: Sensor SonarJavaXmlFileSensor [java] (done) | time=2ms
  INFO: Sensor Analyzer for &quot;php.ini&quot; files [php]
  INFO: Sensor Analyzer for &quot;php.ini&quot; files [php] (done) | time=4ms
  INFO: Sensor TypeScript Sensor [typescript]
  ERROR: module.js:471
  ERROR:     throw err;
  ERROR:     ^
  ERROR: 
  ERROR: Error: Cannot find module 'typescript'
  ERROR:     at Function.Module._resolveFilename (module.js:469:15)
  ERROR:     at Function.Module._load (module.js:417:25)
  ERROR:     at Module.require (module.js:497:17)
  ERROR:     at require (internal/module.js:20:19)
  ERROR:     at Object.&lt;anonymous&gt; (/builds/pkara/projectname/.scannerwork/sonarts-bundle/node_modules/tslint/lib/linter.js:20:10)
  ERROR:     at Module._compile (module.js:570:32)
  ERROR:     at Object.Module._extensions..js (module.js:579:10)
  ERROR:     at Module.load (module.js:487:32)
  ERROR:     at tryModuleLoad (module.js:446:12)
  ERROR:     at Function.Module._load (module.js:438:3)
  ERROR: Failed to find 'typescript' module. Please check, NODE_PATH contains location of global 'typescript' or install locally in your project
  ERROR: External process `node /builds/pkara/projectname/.scannerwork/sonarts-bundle/node_modules/tslint-sonarts/bin/tsrunner` returned an empty output. Run with -X for more information
  </code></pre>
  <p>Given that it <strong>downloads</strong> the relevant plugin:</p>
  <blockquote>
  <p>INFO: Download sonar-typescript-plugin-1.2.0.1484.jar</p>
  </blockquote>
  <p>Why does it fail to find it afterwards?</p>
  <blockquote>
  <p>ERROR: Error: Cannot find module 'typescript</p>
  </blockquote>