在typescript和webpack项目中使用外部库

在typescript和webpack项目中使用外部库,typescript,webpack,Typescript,Webpack,为了解决这个问题,我已经被困了几个星期了,我真的是个精疲力竭的人 到目前为止,根据: 我已将此添加到webpack.common.js: new webpack.ProvidePlugin({ Stripe: 'stripe' }) 然后,在我的typescript组件中添加了以下内容: import * as Stripe from '@types/stripe'; 然而,我得到了这个错误: [ts]文件“…/node_modules/@types/stripe/index.d.t

为了解决这个问题,我已经被困了几个星期了,我真的是个精疲力竭的人

到目前为止,根据:

我已将此添加到
webpack.common.js

new webpack.ProvidePlugin({
    Stripe: 'stripe'
})
然后,在我的typescript组件中添加了以下内容:

import * as Stripe from '@types/stripe';
然而,我得到了这个错误:

[ts]文件“…/node_modules/@types/stripe/index.d.ts”不是模块

我也试过:

import stripePackage from 'stripe';
但我得到了同样的信息:

[ts] File '.../node_modules/@types/stripe/index.d.ts' is not a module.
扩展

现在,我已经卸载了
@types/stripe
,并在
index.html
上添加了脚本cdn参考:

<script type="text/javascript" src="https://js.stripe.com/v2/"></script>
  • 我使用VSCode来开发我的typescript项目。
    VSCode
    可以为
    条带
    对象提供方法,这对我来说很神奇。
    • VSCode如何知道条带的位置?(记住,我只在
      index.html
      中添加了一个
      标记。这对我来说很神奇
    • webpack或typescript
      如何在我的typescript代码中创建
      标记引用之间的链接?我不知道它是如何提供的

  • 根据GitHub发布的版本,
    @types/stripe
    的类型定义已经过时。该版本称它们适用于stripe 2.x,但当前版本为
    4.15.1

    现在,您必须在没有类型定义的情况下生存,请使用以下工具卸载
    @types/stripe

    npm uninstall @types/stripe --save-dev
    
    您必须始终导入模块本身,而不是类型定义。因此:

    import * as Strip from 'stripe';
    
    另外,
    webpack.ProvidePlugin
    仅用于依赖于全局可用模块的旧模块,webpack只需将导入添加到尝试使用该全局模块的每个模块。请参阅。如果您只是在自己的代码中使用它,则可以取消
    ProvidePlugin


    注意:npm上的Stripe仅用于服务器端绑定,您不能将它们捆绑到浏览器的应用程序中。

    如果您只导入“Stripe”编译器现在什么都不告诉我。但是,我应该如何将定义的类型使用到
    “Stripe”
    ?我刚刚意识到,我可以直接使用
    Stripe
    。这是我正在考虑的问题无法将“@types/Stripe”中的
    import*作为Stripe使用
    或“
    import*作为Stripe”中的Stripe使用
    @types
    只是类型定义。这不是一个可以导入的库。这取决于包的编写方式,但如果您的index.html中只有一个脚本标记,并且安装了
    @types
    ,那么我就可以在那里导入it’再也不需要在typescript中导入了谢谢@Michael。我已经添加了一些相关的问题,试图用您在帖子中的方法来处理。您能给我一些灯光吗?(我正在使用浏览器中的stripe)我对stripe一无所知。但是你可以在HTML中的
    标记中包含stripe脚本,并使用全局
    stripe
    。你可能会对类似的问题感兴趣。
    npm uninstall @types/stripe --save-dev
    
    import * as Strip from 'stripe';