簡體   English   中英

Bazel 無法編譯 TypeScript 項目

[英]Bazel fails to compile TypeScript project

我正在嘗試將多個微服務存儲庫轉換為單個單一存儲庫。 我想為此使用 Bazel。 我是 Bazel 的新手,剛開始遷移回購協議。 目前我只想遷移一些 node.js TypeScript 項目。 在沒有任何第三方依賴項的基本測試設置中,一切正常,但對於真實項目,Bazel 無法構建項目。 我正在為 bazel 使用 nodejs_rules。 TypeScript 編譯器無論如何都會生成 transpiled.js 文件。

紗線安裝似乎有效,因為 @bazel/typescript (v5.4.2) npm package 有效(或至少可以使用)。

我使用 Ubuntu 22.04 在 WSL 2 上運行所有內容

巴澤爾版本:

Bazelisk version: development
Build label: 5.1.1
Build target: bazel-out/k8-opt/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar
Build time: Fri Apr 8 15:49:48 2022 (1649432988)
Build timestamp: 1649432988
Build timestamp as int: 1649432988

nodejs_rules 版本:5.4.2

我運行的命令: bazel build //backend/api/about-svc:about-svc

命令的 output(使用--verbose_failures --sandbox_debug ):

Loading: 
Loading: 0 packages loaded
Analyzing: target //backend/api/about-svc:about-svc (0 packages loaded, 0 targets configured)
INFO: Analyzed target //backend/api/about-svc:about-svc (0 packages loaded, 0 targets configured).
INFO: Found 1 target...
[0 / 2] [Prepa] BazelWorkspaceStatusAction stable-status.txt
ERROR: /home/joel/jm-web-monorepo/backend/api/about-svc/BUILD.bazel:4:11: Compiling TypeScript project //backend/api/about-svc:about-svc [tsc -p backend/api/about-svc/tsconfig.json] failed: (Exit 2): linux-sandbox failed: error executing command 
  (cd /home/joel/.cache/bazel/_bazel_joel/c9dd7812d051b4767fbbc332cef2a5de/sandbox/linux-sandbox/615/execroot/jm-web-monorepo && \
  exec env - \
    BAZEL_NODE_MODULES_ROOTS=third_party \
    COMPILATION_MODE=fastbuild \
    TMPDIR=/tmp \
  /home/joel/.cache/bazel/_bazel_joel/install/d81761ab5244f5f4735b9254de6662ba/linux-sandbox -t 15 -w /home/joel/.cache/bazel/_bazel_joel/c9dd7812d051b4767fbbc332cef2a5de/sandbox/linux-sandbox/615/execroot/jm-web-monorepo -w /tmp -w /run/shm -D -- bazel-out/k8-opt-exec-2B5CBBC6/bin/external/npm/typescript/bin/tsc.sh --project backend/api/about-svc/tsconfig.json --outDir bazel-out/k8-fastbuild/bin/backend/api/about-svc/build --rootDir backend/api/about-svc/src '--bazel_node_modules_manifest=bazel-out/k8-fastbuild/bin/backend/api/about-svc/_about-svc_TsProject.module_mappings.json')
1652695641.811586600: src/main/tools/linux-sandbox.cc:152: calling pipe(2)...
1652695641.811616300: src/main/tools/linux-sandbox.cc:171: calling clone(2)...
1652695641.811788100: src/main/tools/linux-sandbox.cc:180: linux-sandbox-pid1 has PID 21891
1652695641.811829100: src/main/tools/linux-sandbox-pid1.cc:641: Pid1Main started
1652695641.811910400: src/main/tools/linux-sandbox.cc:197: done manipulating pipes
1652695641.811967900: src/main/tools/linux-sandbox-pid1.cc:260: working dir: /home/joel/.cache/bazel/_bazel_joel/c9dd7812d051b4767fbbc332cef2a5de/sandbox/linux-sandbox/615/execroot/jm-web-monorepo
1652695641.812025700: src/main/tools/linux-sandbox-pid1.cc:292: writable: /home/joel/.cache/bazel/_bazel_joel/c9dd7812d051b4767fbbc332cef2a5de/sandbox/linux-sandbox/615/execroot/jm-web-monorepo
1652695641.812034100: src/main/tools/linux-sandbox-pid1.cc:292: writable: /tmp
1652695641.812038200: src/main/tools/linux-sandbox-pid1.cc:292: writable: /run/shm
1652695641.812095800: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /
1652695641.812102800: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /init
1652695641.812106600: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /dev
1652695641.812109900: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /dev/pts
1652695641.812113500: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /sys
1652695641.812116700: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /sys/fs/cgroup
1652695641.812121100: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /sys/fs/cgroup/unified
1652695641.812124900: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /sys/fs/cgroup/cpuset
1652695641.812128200: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /sys/fs/cgroup/cpu
1652695641.812131200: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /sys/fs/cgroup/cpuacct
1652695641.812134300: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /sys/fs/cgroup/blkio
1652695641.812137300: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /sys/fs/cgroup/memory
1652695641.812140600: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /sys/fs/cgroup/devices
1652695641.812156000: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /sys/fs/cgroup/freezer
1652695641.812159700: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /sys/fs/cgroup/net_cls
1652695641.812162900: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /sys/fs/cgroup/perf_event
1652695641.812166100: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /sys/fs/cgroup/net_prio
1652695641.812169300: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /sys/fs/cgroup/hugetlb
1652695641.812172400: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /sys/fs/cgroup/pids
1652695641.812175500: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /sys/fs/cgroup/rdma
1652695641.812178800: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /proc
1652695641.812181500: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /proc/sys/fs/binfmt_misc
1652695641.812185900: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /run
1652695641.812188800: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /run/lock
1652695641.812192000: src/main/tools/linux-sandbox-pid1.cc:362: remount rw: /run/shm
1652695641.812195300: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /run/user
1652695641.812209800: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /usr/lib/wsl/drivers
1652695641.812213900: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /usr/lib/wsl/lib
1652695641.812216800: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /mnt/wsl
1652695641.812220100: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /mnt/wsl/docker-desktop-data/isocache
1652695641.812224000: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /mnt/wsl/docker-desktop/shared-sockets/guest-services
1652695641.812227500: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /mnt/wsl/docker-desktop/shared-sockets/host-services
1652695641.812230600: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /mnt/wsl/docker-desktop/docker-desktop-user-distro
1652695641.812238500: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /mnt/wsl/docker-desktop/cli-tools
1652695641.812242100: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /mnt/wsl/docker-desktop-bind-mounts/Ubuntu-20.04/afaeca644a7dfedf26fcdf2ad0a22cb3788bab0a26d8741bbe001dec46f2aa00
1652695641.812254100: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /mnt/wsl/docker-desktop-bind-mounts/Ubuntu-20.04/b2c426efc7f1ab52f7952811ea2610cd78565fa602ab72c99baacf6d99b5c37b
1652695641.812257700: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /mnt/wslg
1652695641.812260700: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /mnt/wslg/versions.txt
1652695641.812263600: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /mnt/wslg/doc
1652695641.812267000: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /mnt/c
1652695641.812270200: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /mnt/c
1652695641.812273000: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /mnt/d
1652695641.812275900: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /mnt/f
1652695641.812284400: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /mnt/g
1652695641.812287600: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /mnt/s
1652695641.812291200: src/main/tools/linux-sandbox-pid1.cc:362: remount ro: /mnt/y
1652695641.812294400: src/main/tools/linux-sandbox-pid1.cc:362: remount rw: /home/joel/.cache/bazel/_bazel_joel/c9dd7812d051b4767fbbc332cef2a5de/sandbox/linux-sandbox/615/execroot/jm-web-monorepo
1652695641.812297800: src/main/tools/linux-sandbox-pid1.cc:362: remount rw: /home/joel/.cache/bazel/_bazel_joel/c9dd7812d051b4767fbbc332cef2a5de/sandbox/linux-sandbox/615/execroot/jm-web-monorepo
1652695641.812300900: src/main/tools/linux-sandbox-pid1.cc:362: remount rw: /tmp
1652695641.812303900: src/main/tools/linux-sandbox-pid1.cc:362: remount rw: /run/shm
1652695641.812354800: src/main/tools/linux-sandbox-pid1.cc:451: calling fork...
1652695641.812439000: src/main/tools/linux-sandbox-pid1.cc:481: child started with PID 2
1652695643.191235800: src/main/tools/linux-sandbox-pid1.cc:498: wait returned pid=2, status=0x200
1652695643.191249200: src/main/tools/linux-sandbox-pid1.cc:516: child exited normally with code 2
1652695643.191397700: src/main/tools/linux-sandbox.cc:233: child exited normally with code 2
backend/api/about-svc/src/Models/v1/About.ts(1,22): error TS2307: Cannot find module 'mongoose' or its corresponding type declarations.
backend/api/about-svc/src/common/v1/editAboutText.ts(1,49): error TS2307: Cannot find module 'express' or its corresponding type declarations.
backend/api/about-svc/src/common/v1/editAboutText.ts(30,14): error TS7006: Parameter 'aboutEntry' implicitly has an 'any' type.
backend/api/about-svc/src/common/v1/editAboutText.ts(34,15): error TS7006: Parameter 'err' implicitly has an 'any' type.
backend/api/about-svc/src/common/v1/getAboutText.ts(1,49): error TS2307: Cannot find module 'express' or its corresponding type declarations.
backend/api/about-svc/src/common/v1/getAboutText.ts(2,36): error TS2307: Cannot find module 'mongoose' or its corresponding type declarations.
backend/api/about-svc/src/config/mongoDBSetup.ts(1,22): error TS2307: Cannot find module 'mongoose' or its corresponding type declarations.
backend/api/about-svc/src/config/mongoDBSetup.ts(4,37): error TS2580: Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
backend/api/about-svc/src/config/mongoDBSetup.ts(4,66): error TS2580: Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
backend/api/about-svc/src/config/mongoDBSetup.ts(4,97): error TS2580: Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
backend/api/about-svc/src/config/mongoDBSetup.ts(13,12): error TS7006: Parameter '_' implicitly has an 'any' type.
backend/api/about-svc/src/config/mongoDBSetup.ts(16,13): error TS7006: Parameter 'err' implicitly has an 'any' type.
backend/api/about-svc/src/helpers/endRequestLogger.ts(1,49): error TS2307: Cannot find module 'express' or its corresponding type declarations.
backend/api/about-svc/src/helpers/kafka-logger/index.ts(1,70): error TS2307: Cannot find module 'kafkajs' or its corresponding type declarations.
backend/api/about-svc/src/helpers/logger.ts(1,49): error TS2307: Cannot find module 'express' or its corresponding type declarations.
backend/api/about-svc/src/index.ts(1,58): error TS2307: Cannot find module 'express' or its corresponding type declarations.
backend/api/about-svc/src/index.ts(3,20): error TS2307: Cannot find module 'dotenv' or its corresponding type declarations.
backend/api/about-svc/src/index.ts(6,39): error TS2307: Cannot find module '@joel-muehlena-website/jm-config-server-addon' or its corresponding type declarations.
backend/api/about-svc/src/index.ts(7,18): error TS2307: Cannot find module 'path' or its corresponding type declarations.
backend/api/about-svc/src/index.ts(9,21): error TS2307: Cannot find module 'fs' or its corresponding type declarations.
backend/api/about-svc/src/index.ts(11,24): error TS2307: Cannot find module 'body-parser' or its corresponding type declarations.
backend/api/about-svc/src/index.ts(14,3): error TS2580: Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
backend/api/about-svc/src/index.ts(18,3): error TS2580: Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
backend/api/about-svc/src/index.ts(23,57): error TS2304: Cannot find name '__dirname'.
backend/api/about-svc/src/index.ts(27,5): error TS2580: Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
backend/api/about-svc/src/index.ts(35,5): error TS2580: Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
backend/api/about-svc/src/index.ts(37,23): error TS2304: Cannot find name '__dirname'.
backend/api/about-svc/src/index.ts(37,64): error TS7006: Parameter 'err' implicitly has an 'any' type.
backend/api/about-svc/src/index.ts(48,35): error TS2304: Cannot find name '__dirname'.
backend/api/about-svc/src/index.ts(50,16): error TS2580: Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i --save-dev @types/node`.
backend/api/about-svc/src/routes/v1/about.ts(1,21): error TS2307: Cannot find module 'express' or its corresponding type declarations.
Target //backend/api/about-svc:about-svc failed to build
INFO: Elapsed time: 1.685s, Critical Path: 1.52s
INFO: 2 processes: 2 internal.
FAILED: Build did NOT complete successfully
FAILED: Build did NOT complete successfully

我的 WORKSPACE.bazel 文件:

workspace(
    name = "jm-web-monorepo",
)

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

######################################
#####         NODEJS            #####
#####################################

http_archive(
    name = "build_bazel_rules_nodejs",
    sha256 = "0fad45a9bda7dc1990c47b002fd64f55041ea751fafc00cd34efb96107675778",
    urls = ["https://github.com/bazelbuild/rules_nodejs/releases/download/5.5.0/rules_nodejs-5.5.0.tar.gz"],
)

load("@build_bazel_rules_nodejs//:repositories.bzl", "build_bazel_rules_nodejs_dependencies")

build_bazel_rules_nodejs_dependencies()

load("@build_bazel_rules_nodejs//:index.bzl", "node_repositories", "yarn_install")

node_repositories(
    node_version = "16.14.2",
    yarn_version = "1.22.18",
)

yarn_install(
    name = "npm",
    data = ["//third_party:.npmrc"],
    package_json = "//third_party:package.json",
    yarn_lock = "//third_party:yarn.lock",
)

backend/api/abut-svc中的 BUILD.bazel 文件

load("@npm//@bazel/typescript:index.bzl", "ts_project")
load("@build_bazel_rules_nodejs//:index.bzl", "nodejs_binary")

ts_project(
    name = "about-svc",
    srcs = glob(["src/**/*.ts"]),
    out_dir = "build",
    resolve_json_module = True,
    root_dir = "src",
    tsc = "@npm//typescript/bin:tsc",
    deps = [
        "@npm//@joel-muehlena-website/jm-config-server-addon",
        "@npm//@types/body-parser",
        "@npm//@types/express",
        "@npm//@types/node",
        "@npm//axios",
        "@npm//body-parser",
        "@npm//dotenv",
        "@npm//express",
        "@npm//kafkajs",
        "@npm//mongoose",
    ],
)

tsconfig.json:

{
  "compilerOptions": {
    "target": "es6",
    "lib": ["es6", "es2017", "ES2020", "ESNext"],
    "module": "CommonJS",
    "sourceMap": false,
    "moduleResolution": "node",
    "removeComments": true,
    "noImplicitAny": true,
    "strictNullChecks": true,
    "strictFunctionTypes": true,
    "noImplicitThis": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "noImplicitReturns": true,
    "noFallthroughCasesInSwitch": true,
    "allowSyntheticDefaultImports": true,
    "esModuleInterop": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "resolveJsonModule": true,
  }
}

third_party中的package.json

{
  "name": "generic-bazel-file",
  "version": "0.1.0",
  "description": "Holds the npm packages for bazel",
  "author": "Joel Rene Mühlena",
  "devDependencies": {
    "@types/express": "^4.17.9",
    "@types/jest": "^26.0.19",
    "@types/node": "^14.14.19",
    "@types/supertest": "^2.0.10",
    "jest": "^26.6.3",
    "nodemon": "^2.0.6",
    "supertest": "^6.0.1",
    "ts-jest": "^26.4.4",
    "typescript": "^4.1.3",
    "@bazel/typescript": "^5.5.0"
  },
  "dependencies": {
    "@joel-muehlena-website/jm-config-server-addon": "^0.1.0",
    "@types/body-parser": "^1.19.0",
    "axios": "^0.21.1",
    "body-parser": "^1.19.0",
    "dotenv": "^8.2.0",
    "express": "^4.17.1",
    "kafkajs": "^1.15.0",
    "mongoose": "^5.11.9"
  }
}

bazel 生成的結果 output

這是調試 沙箱問題根本原因的非常簡單的方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM