【问题标题】:Importing bower component library into Angular 2 application将 Bower 组件库导入 Angular 2 应用程序
【发布时间】:2016-09-09 02:18:57
【问题描述】:

我正在开发 ASP.NET Core 中的 Angular 2 应用程序,我正在尝试将 oidc-client (https://github.com/IdentityModel/oidc-client-js) 导入到我的一个 Typescript 文件中。 oidc-client 文件是通过 bower 安装的,将它们放置在预期的 bower_components 文件夹中。 oidc-client.js 文件通过构建时的 gulp 任务复制到 wwwroot 下的 lib 文件夹。

我的目录结构如下所示(仅表示相关部分):

wwwroot
|
 --app
|  |
|   --shared
|     |
|      --auth
|        |
|         --token.service.ts
 --lib
|  |
|   --oidc-client
|     |
|      --oidc-client.js
|
 --bower_components
|  |
|   --oidc-client
|     |
|      --dist
|     |  |
|     |   --oidc-client.js
|      --oidc-client.d.ts
|
 --typings
   |
    --index.d.ts

我需要在我的 token.service.ts 文件中使用 oidc-client 库,所以我这样做:

import { Oidc } from './lib/oidc-client/oidc-client';

但这会导致错误'找不到模块'./lib/oidc-client/oidc-client'。

我在路径上尝试了不同的变体,相对的和非相对的,但我似乎无法弄清楚如何导入 oid-client 库。

也许它的打字不起作用?我是否需要对 d.ts 文件做一些特别的事情才能让它工作?

感谢您的指导。

【问题讨论】:

  • 帮自己一个忙,改用 npm 包。 Angular 2 明确依赖于 NPM 包。
  • 好的,但同样的问题仍然存在。无论它来自 npm 还是 bower 包,我似乎仍然无法从我的 lib 文件夹中导入正确的语法。

标签: javascript angular asp.net-core


【解决方案1】:

正如上面评论中提到的,使用oidc-client 的 NPM 分布将是首选。

但是,oidc-client 中包含的类型有点奇怪。通常,类型 .d.ts 文件与 .js 文件并排放置。对于oidc-client,它们位于不同的目录中,这就是导致您的import 语句出现问题的原因。

如果您安装 NPM 模块并将node_modules/oidc-client/oidc-client.d.ts 添加到您的tsconfig.jsonfiles 配置中:

{
    "files": [
        "index.ts",
        "node_modules/oidc-client/oidc-client.d.ts"
    ]
}

您应该能够创建一个导入oidc-clientindex.ts 文件:

import { OidcClient } from "oidc-client";

如果 .d.ts 文件和 .js 文件并排放置,您的 import 会起作用,但它们不是,所以它不起作用。

如果您不想使用 NPM 发行版,那么 .d.ts.js 文件的分离很可能也是导致 Bower 发行版出现问题的原因。

【讨论】:

  • 我继续按照建议切换到 npm 包。有趣的是,.d.ts 和 .js 的分离仍然存在于该包中。我的 Angular 2 项目是从这里的快速入门开始的 angular.io/docs/ts/latest/quickstart.html,因此一个带有 index.ts 文件的类型文件夹已经存在。我需要做的就是像这样添加对 index.ts 文件的引用 /// 一切都开始工作了。无需更新 tsconfig.json。感谢您的帮助。
猜你喜欢
  • 2023-03-16
  • 1970-01-01
  • 2016-09-25
  • 2018-01-19
  • 2016-03-27
  • 2017-12-17
  • 2017-12-28
  • 2018-02-22
  • 2017-06-21
相关资源
最近更新 更多