typescript - SonarQube:找不到 typescript 模块

标签 typescript docker sonarqube gitlab-ci sonarqube-scan

我正在使用 SonarQube 分析一个 Typescript 项目。

分析在 Gitlab 管道阶段运行,使用带有 sonar-scanner 的 docker 图像。

这是一些输出:

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: "en", source code encoding: "UTF-8" (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 "php.ini" files [php]
INFO: Sensor Analyzer for "php.ini" 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.<anonymous> (/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

鉴于它下载相关插件:

INFO: Download sonar-typescript-plugin-1.2.0.1484.jar

为什么后来找不到了?

ERROR: Error: Cannot find module 'typescript

最佳答案

在非 docker 环境中,您必须先设置 NODE_PATH 以指向全局 NPM 目录。在 Windows 10 命令行中,批处理脚本如下所示:

SET NODE_PATH=%AppData%\npm\node_modules
C:\SonarQube\sonar-scanner-3.1.0.1141-windows\bin\sonar-scanner.bat -Dsonar.projectKey=PortalUI -Dsonar.sources=.\src -Dsonar.host.url=http://localhost:9000 -Dsonar.login=longtoken_xkxxxxxxx

关于typescript - SonarQube:找不到 typescript 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48319490/

相关文章:

java - Docker 使用哪个 OpenJDK 发行版?

c# - Sonar : Validate changes from a date

javascript - angular 2 访问组件内的 ng-content

node.js - 如何在 .ts 而不是 .js 中显示 Typescript 运行时错误/异常

typescript - 为什么基类上的 TypeScript 装饰器会导致扩展相互影响?

java - Sonar 误报问题

mysql - Sonar 检查 https ://analysis. apache/system 处的配置

javascript 将数组合并为单个对象

powershell - 如何退格或删除?

docker - 无法将Docker镜像推送到gcr.io