Webpack:无法解析模块(Stripe.js)

时间:2017-03-27 09:26:58

标签: angular typescript webpack

我已将Stripe.js脚本标记添加到我的index.html

<script type="text/javascript" src="https://js.stripe.com/v2/"></script>

我从webpack收到此错误消息:

  

找不到模块:错误:无法解析'stripe'

如您所见,webpack无法解析'stripe'模块。我使用以下方法导入它:

import 'stripe';

因此,在我的代码中,我使用Stripe键工作来访问Stripe

@Injectable()
export class SourceEffects {
  constructor() {
    Stripe.setPublishableKey("pk_test_Casd");
  }
}

一切似乎都有效(VSCODE不会警告我任何事情)。然而,当我试图运行webpack时,我遇到了错误。

有什么想法吗?

修改

简而言之:

  1. 我正在使用@types/stripe
  2. 我使用import 'stripe'将其导入打字稿代码。
  3. 网络包给我一个can't resolve stripe module

1 个答案:

答案 0 :(得分:0)

我不知道你如何获得客户端Stripe.js的类型信息,但是如果你只是想要启动并运行,你可以执行以下操作:

export class SourceEffects {
  constructor() {
    let Stripe: any = (window as <any>).Stripe;
    Stripe.setPublishableKey("pk_test_Casd");
  }
}

基本上,Stripe.js的脚本标记将一个Stripe对象添加到窗口对象,所以只需从那里获取对象,然后关闭该API的类型检查。如果您想为客户端Stripe.js键入信息,您将不得不环顾四周(或自己编写)。但使用any将关闭Stripe的类型检查。

有关完整示例,请参阅this blog post

PS。您仍然需要删除import 'stripe'行。

编辑:为什么您的解决方案不起作用

- 我正在使用@ types / stripe。 这仅适用于typescript编译器来获取节点模块“stripe”的类型定义。这不用于运行您的应用程序,这就是为什么您应该只将它添加到您的devDependencies

- 我使用import'strip'将其导入打字稿代码。 import 'stripe'是webpack在node_modules中查找模块'stripe'的指令。您没有该模块 - 您没有使用节点库条带。

- webpack让我无法解析条带模块。 由于您的package.json(并且已安装)中没有列出'stripe'作为您正在使用的库,因此webpack在尝试加载它时无法找到它。