无法导入从bazel构建的打字稿模块

时间:2019-05-13 17:37:17

标签: typescript node-modules bazel

我尝试使用bazel build //core:package使用@bazel/typescript和bazel的npm_package规则构建节点模块。下面是我的BUILD文件

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";

我的问题是:

  1. 它是amd模块,因此无法导入?
  2. 如何解决此问题?

请帮助!!!

1 个答案:

答案 0 :(得分:0)

好的,我自己找到答案。从ts_library文档开始,它没有解释和列出使用名为

的参数的示例。
module_name

如果您在尝试构建模块时未传递此参数,则会将文件路径作为模块名称,这将导致导入问题。