Ошибка Bazel после обновления Nodejs правил - ОШИБКА: defs.bzl был удален из build_bazel_rules_nodejs - PullRequest
0 голосов
/ 10 января 2020

После обновления build_bazel_rules_ nodejs с 0.42.2 до 1.0.1 я получаю эту ошибку:

ERROR: /home/flolu/.cache/bazel/_bazel_flolu/698f7adad10ea020bcdb85216703ce08/external/build_bazel_rules_nodejs/defs.bzl:19:5: Traceback (most recent call 
last):
        File "/home/flolu/Desktop/minimal-bazel-monorepo/services/server/src/BUILD", line 76
                nodejs_image(name = "server", <2 more arguments>)
        File "/home/flolu/.cache/bazel/_bazel_flolu/698f7adad10ea020bcdb85216703ce08/external/io_bazel_rules_docker/nodejs/image.bzl", line 112, in nodejs_image
                nodejs_binary(name = binary, <2 more arguments>)
        File "/home/flolu/.cache/bazel/_bazel_flolu/698f7adad10ea020bcdb85216703ce08/external/build_bazel_rules_nodejs/defs.bzl", line 19, in nodejs_binary
                fail(<1 more arguments>)

ERROR: defs.bzl has been removed from build_bazel_rules_nodejs

Please update your load statements to use index.bzl instead.

See https://github.com/bazelbuild/rules_nodejs/wiki#migrating-off-build_bazel_rules_nodejsdefsbzl for help.
ERROR: error loading package 'services/server/src': Package 'services/server/src' contains errors
INFO: Elapsed time: 0.119s
INFO: 0 processes.
FAILED: Build did NOT complete successfully (1 packages loaded)
FAILED: Build did NOT complete successfully (1 packages loaded)

Строка 76 в ошибке относится к этой части файла BUILD :

load("@io_bazel_rules_docker//nodejs:image.bzl", "nodejs_image")
nodejs_image(
    name = "server",
    data = [":lib"],
    entry_point = ":index.ts",
)

Но нет defs.bzl. Так что я смущен ошибкой.


Итак, подробно я обновил с

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

до

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

Вы можете воссоздать ошибку, клонировав это репо: https://github.com/flolude/minimal-bazel-monorepo/tree/48add7ddcad4d25e361e1c7f7f257cf916a797b2 и работает

bazel test //services/server/src:test

1 Ответ

1 голос
/ 11 января 2020

Между этими версиями build_bazel_rules_nodejs произошли серьезные изменения. А именно путь импорта:

load("@build_bazel_rules_nodejs//:defs..bzl", <whatever>)

должен стать таким

load("@build_bazel_rules_nodejs//:index.bzl", <whatever>)

Вам также необходимо обновить io_bazel_rules_docker как минимум до v0.13.0. Из замечаний к выпуску можно узнать версию, совместимую с 1.0.1 в узле. https://github.com/bazelbuild/rules_docker/releases/

...