typescript - 无法导入从 bazel 构建的打字稿模块
问题描述
我尝试使用@bazel/ typescript和npm_package的 bazel 规则构建节点模块,使用bazel build //core:package
. 下面是我的构建文件
package(default_visibility = ["//visibility:public"])
load("@npm_bazel_typescript//:index.bzl", "ts_library")
load("@build_bazel_rules_nodejs//:defs.bzl", "npm_package")
ts_library(
name = "core",
srcs = glob(["*.ts"]),
)
npm_package(
name = "package",
srcs = ["package.json"],
deps = [":core"],
replacements = {"//internal/": "//"},
)
然后我运行bazel run //core:package.pack
它并生成一个.tgz
文件,然后我通过运行npm install ./xxx.tgz -s
. 一切正常,直到我尝试使用import * as core from 'core';
它给了我错误说Error: Cannot find module 'core/index'
模块的声明文件如下所示
/// <amd-module name="core/index" />
export * from './public_api';
/// <amd-module name="core/public_api" />
export declare const foo = "foo";
export declare const bar = "bar";
我的问题是:
- 因为是amd模块所以无法导入?
- 我该如何解决这个问题?
请帮忙!!!
解决方案
好吧,我自己找到答案。来自 ts_library doc,它没有解释并列出使用名为的参数的示例
module_name
如果您在尝试构建模块时未传递此参数,则会将文件路径作为模块名称,这将导致导入问题。
推荐阅读
- facebook-graph-api - 使用永不过期的访问代码的授权异常
- c# - 实体框架加载未知数量的嵌套导航属性
- c# - 进度条颜色错误
- angular - 角度如何以不同的方式设置表格中的最小值
- c++ - 在 C++ 命名空间中包含全局函数
- wordpress - WooCommerce 在我的帐户订单详细信息中添加产品图片
- java - 从 SharePreference 中检索数据
- javascript - 为什么我必须调用() push() JS 函数并重新设置它以获得预期的结果?
- c - 在两个运行 TUN/TAP 的设备之间交换消息
- python - pipenv install django 无需每次都重新下载?