【问题标题】:Fail to import typescript module built from bazel无法导入从 bazel 构建的打字稿模块
【发布时间】:2019-09-30 17:00:11
【问题描述】:

我尝试使用@bazel/typescriptnpm_package 使用bazel build //core:package 的bazel 规则构建节点模块。下面是我的 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. 如何解决此问题?

请帮忙!!!

【问题讨论】:

    标签: typescript node-modules bazel


    【解决方案1】:

    好的,我自己找到答案。来自ts_library doc,没有解释和列举一个使用参数的例子

    module_name
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-21
      • 1970-01-01
      • 2021-07-12
      • 1970-01-01
      • 1970-01-01
      • 2017-10-29
      • 2022-01-19
      相关资源
      最近更新 更多