gpt4 book ai didi

node.js - Bazel 观察程序未终止 Node 进程(错误:Listen EADDRINUSE:地址已在使用中:::3000)

转载 作者:行者123 更新时间:2023-12-02 10:15:22 26 4
gpt4 key购买 nike

我有一个带有 nodejs_image 的 Bazel BUILD 文件:

package(default_visibility = ["//visibility:public"])

load("@npm_bazel_typescript//:index.bzl", "ts_library")
ts_library(
name = "lib",
srcs = glob(
include = ["**/*.ts"],
exclude = ["**/*.spec.ts"]
),
deps = [
"//packages/enums/src:lib",
"//packages/hello/src:lib",
"@npm//faker",
"@npm//@types/faker",
"@npm//express",
"@npm//@types/express",
"@npm//cors",
],
)

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

启动一个简单的 Express Node.Js 服务器:

app.listen(3000, () => console.log('listening on port 3000'));

当我运行时

ibazel run //services/server/src:server

服务器启动正常。但是当我更改一些代码并且 Bazel Watcher 重新启动时,我收到此错误:

Error: listen EADDRINUSE: address already in use :::3000

因此,之前的 Node.Js 进程没有被终止,端口仍在使用中。

  • 我必须在 Node.Js 应用程序内处理终止吗?

  • 或者还有其他方法可以使用 Bazel Watcher 运行 Node.Js 代码吗?

  • 或者是 Bazel Watcher 的问题?

您可以自己尝试一下:https://github.com/flolude/minimal-bazel-monorepo/tree/f23b960b57a94abbb5cbc13853b3e8ec4a1997ab

最佳答案

@Toxicable已声明,我已将 nodejs_image 更改为 nodejs_binary,如下所示:

load("@build_bazel_rules_nodejs//:defs.bzl", "nodejs_binary")
nodejs_binary(
name = "server",
data = [":lib"],
entry_point = ":index.ts",
)

这解决了问题。

关于node.js - Bazel 观察程序未终止 Node 进程(错误:Listen EADDRINUSE:地址已在使用中:::3000),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59563823/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com