flo*_*olu 5 node.js docker bazel docker-image
我有一个带有以下内容的 Bazel BUILD 文件nodejs_image:
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",
)
Run Code Online (Sandbox Code Playgroud)
启动一个简单的 Express Node.Js 服务器:
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",
)
Run Code Online (Sandbox Code Playgroud)
当我跑
ibazel run //services/server/src:server
Run Code Online (Sandbox Code Playgroud)
服务器启动得很好。但是当我更改一些代码并且 Bazel Watcher 重新启动时,我收到此错误:
Error: listen EADDRINUSE: address already in use :::3000
Run Code Online (Sandbox Code Playgroud)
因此,之前的 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",
)
Run Code Online (Sandbox Code Playgroud)
这解决了问题。
| 归档时间: |
|
| 查看次数: |
162 次 |
| 最近记录: |