【问题标题】:Bazel Error After Upgrading Nodejs Rules - ERROR: defs.bzl has been removed from build_bazel_rules_nodejs升级 Nodejs 规则后出现 Bazel 错误 - 错误:defs.bzl 已从 build_bazel_rules_nodejs 中删除
【发布时间】:2020-01-10 20:30:54
【问题描述】:

build_bazel_rules_nodejs0.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"],
)

您可以通过克隆此 repo 来重新创建错误:https://github.com/flolude/minimal-bazel-monorepo/tree/48add7ddcad4d25e361e1c7f7f257cf916a797b2 并运行

bazel test //services/server/src:test

【问题讨论】:

    标签: node.js bazel


    【解决方案1】:

    build_bazel_rules_nodejs 的这些版本之间存在一些重大变化。即导入路径this:

    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/

    【讨论】:

    • 如果这个项目比较新,我会尝试将所有库更新到最新的稳定版本。
    • 我不知道如何自动完成。我会去每个库的发布页面并选择最新版本。您拥有 WORKSPACE 中的所有网址
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-09-30
    • 1970-01-01
    • 1970-01-01
    • 2013-09-07
    • 2019-03-07
    • 2020-01-19
    • 2019-05-21
    相关资源
    最近更新 更多