简体   繁体   English

升级 Nodejs 规则后出现 Bazel 错误 - 错误:defs.bzl 已从 build_bazel_rules_nodejs 中删除

[英]Bazel Error After Upgrading Nodejs Rules - ERROR: defs.bzl has been removed from build_bazel_rules_nodejs

After upgrading build_bazel_rules_nodejs from 0.42.2 to 1.0.1 I get this error: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)

Line 76 in the error refers to this part of the BUILD file:错误中的第 76 行是指 BUILD 文件的这一部分:

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

But there is no defs.bzl .但是没有defs.bzl So I am confused by the error.所以我对错误感到困惑。


So in detail I have upgraded from所以详细我已经升级了

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

to

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

You can recreate the error by cloning this repo: https://github.com/flolude/minimal-bazel-monorepo/tree/48add7ddcad4d25e361e1c7f7f257cf916a797b2 and running您可以通过克隆此 repo 来重新创建错误: https : //github.com/flolude/minimal-bazel-monorepo/tree/48add7ddcad4d25e361e1c7f7f257cf916a797b2并运行

bazel test //services/server/src:test

There are some breaking changes between those versions of build_bazel_rules_nodejs .这些版本的build_bazel_rules_nodejs之间有一些重大变化。 Namely the import path this:即导入路径这个:

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

needs to become this需要变成这个

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

You also need to update your io_bazel_rules_docker to at least v0.13.0 .您还需要将io_bazel_rules_docker更新到至少v0.13.0 From looking at the release notes its the version compatible with 1.0.1 in node.从查看发行说明来看,它的版本与节点中的1.0.1兼容。 https://github.com/bazelbuild/rules_docker/releases/ https://github.com/bazelbuild/rules_docker/releases/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM