将 SweetAlert2 与 TypeScript 结合使用,找不到模块“sweetalert2/dist/sweetalert2.js”的声明文件

2024-02-26

我正在将我的一个项目迁移到 TypeScript,在该项目中甜蜜警报2 https://sweetalert2.github.io/使用库。

导入 SweetAlert2(JS 和 CSS)的默认方式是

import Swal from 'sweetalert2'

这对于 TypeScript 来说效果很好,因为库中有类型:https://github.com/sweetalert2/sweetalert2/blob/master/sweetalert2.d.ts https://github.com/sweetalert2/sweetalert2/blob/master/sweetalert2.d.ts

但在我的项目中导入的方式是这样的:

import Swal from 'sweetalert2/dist/sweetalert2.js'

这仅适用于 JS,不带样式。对于这种类型的导入,我收到 TS 错误:

Could not find a declaration file for module 'sweetalert2/dist/sweetalert2.js'. 

ts(7016)

我尝试复制sweetalert2/sweetalert2.d.ts to sweetalert2/dist/sweetalert2.d.ts,但又出现另一个错误:

File 'node_modules/sweetalert2/dist/sweetalert2.d.ts' is not a module. 

ts(2306)

这里发生了什么以及 TS 抱怨的原因dist/sweetalert2.d.ts不是一个模块吗?


SweetAlert 当前的类型定义不提供“子模块”的类型。 当您使用declare module syntax 像这样 https://github.com/sweetalert2/sweetalert2/blob/master/sweetalert2.d.ts#L1,您“立即”输入整个包(用户从导入时得到的内容)^sweetalert2$),但是您没有准确描述 dist/ 中各个编译文件中的内容,所以是的,它们不能明确定位。

尝试删除declare module完全阻止你的copied文件。然后,使用declare namespace Swal,它会起作用的。

我们应该能够修改 sweetalert2 的声明文件,以便简单导入和子文件导入都可以工作。

看看我如何输入 graphql-compose 以便这成为可能:graphql 撰写 https://github.com/graphql-compose/graphql-compose

每个 .js 文件都有一个 .d.ts 对应文件,并且不再有一个文件来描述整个模块declare module.

编辑:我在你的重现中尝试了这种方法,效果很好,我们可以输入sweetalert2.all.js以及。不过,以下解决方案可能更简单(文件更少,构建脚本更简单)。 1:1 映射方法更好,但可能更适合较大的库。

另一种可能性是添加declare module 'sweetalert2/dist/{**}'单曲条目sweetalert2.d.ts文件,重新导出每个的默认模块内容dist/变体:

declare module 'sweetalert2' {
    // Current contents of the file, unchanged
}

declare module 'sweetalert2/dist/sweetalert2.js' {
    export * from 'sweetalert2';
    // "export *" does not matches the default export, so do it explicitly.
    export { default } from 'sweetalert2';
}

declare module 'sweetalert2/dist/sweetalert2.all.js' {
    export * from 'sweetalert2';
    export { default } from 'sweetalert2';
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 SweetAlert2 与 TypeScript 结合使用,找不到模块“sweetalert2/dist/sweetalert2.js”的声明文件 的相关文章

  • 为什么 Jshint 在此 if 语句中说“变量已定义”?

    我有这个代码 if something is true var someVar true else var someVar false JsHint 表示在 else 语句部分 someVar 已被定义 这是为什么 我该如何解决 Thank
  • 如何使用标准 JavaScript 在 CSS 转换结束后立即重新启动它?

    我构建了一种密码生成器 只要倒计时到期 它就会显示新密码 不幸的是 我只设法弄清楚如何运行我的代码一次 倒计时由一个简单的 CSS 过渡组成 我想保留它 因为它比我的其他尝试平滑得多 其中我尝试使用 JavaScript 重复更新宽度 va
  • 获取 CRM 2011 中功能区按钮的 ID

    我创建了一个 JavaScript 我想在其中隐藏功能区Reactivate Lead按钮取决于某些条件 我通过在表单上按 F12 获得了按钮的 ID 即lead NoRelationship Form Mscrm Form lead Re
  • Mongoose 查询执行后回调函数从未被调用

    以下是我的代码 mongoose connect mongodb localhost mydatabase var db mongoose connection db on error console error bind console
  • 使用非常大的背景位置偏移是否存在性能问题?

    我正在构建一个进度条控件 并且正在研究它实际上并不显示进度 而只是旋转 正在发生某事 的指示器的情况 我的设计基本上是交替的对角条纹 本质上是一个像这样的理发杆 但是 旋转 由于希望将尽可能多的负载转移给渲染引擎 我想为此使用 CSS 过渡
  • 有没有办法让 jslint 在 javascript 的下一行中使用大括号?

    我改变了我的编码风格 function getParams entity use strict var accountID store getItem AccountID switch entity case Topic to functi
  • “React”在定义之前就被使用了

    我正在使用 create react app typescript eslint 应用程序 在构建过程中出现这样的错误 Line 1 8 React was used before it was defined typescript esl
  • JavaScript 可以检测用户的浏览器是否支持 gzip 吗?

    我可以使用 JavaScript 来检测用户的浏览器是否支持 gzip 压缩内容 客户端 而不是 Node js 或类似内容 我正在尝试支持以下边缘情况 有很多可能的文件可以加载到特定的 Web 应用程序上 最好在应用程序运行时根据需要加载
  • 有没有办法在 React 中自动播放音频而不使用 onClick 事件?

    我在尝试在 componentDidMount 中播放音频时收到此错误 未捕获 承诺中 DOMException play 失败 因为用户没有先与文档交互 componentDidMount document getElementById
  • 个人 Tumblr 帖子上的 Javascript

    我知道您可以编辑在 tumblr 博客上呈现所有帖子博客主页的 html AngularJS 但是 有什么办法可以添加自定义到各个帖子 我想在逐个帖子的基础上做一些 javascript 的东西 但似乎无法找到可以编辑代码的位置 或者 如果
  • 如何用 JavaScript 修复图像透视变形和旋转?

    我有一些用手机拍摄的图像 有没有可以拉直纸张照片并将其压平的 JavaScript 库 例如 我想创建一个矩形图像 该图像没有任何失真 换句话说我想知道如何用 JavaScript 修复透视变形和旋转 例如 我发现下面的示例图像来自this
  • 如何绕过Access-Control-Allow-Origin?

    我正在一个平台上对我自己的服务器进行ajax调用 他们设置了阻止这些ajax调用的平台 但我需要它从我的服务器获取数据以显示从我的服务器数据库检索到的数据 我的 ajax 脚本正在运行 它可以将数据发送到我的服务器的 php 脚本以允许其处
  • JQuery $.ajax() 在 java servlet 中发布数据

    我想将数据发送到 java servlet 进行处理 数据将具有可变长度并采用键 值对 A1984 1 A9873 5 A1674 2 A8724 1 A3574 3 A1165 5 数据不需要这样格式化 这就是我现在的方式 var sav
  • 如何使用 TypeScript 接口输入 Vue 提示 props?

    这件事真的让我的头撞到了墙上 我记得在 Angular 工作时 TS 接口可用于输入提示参数 我想对 Vue 中的 props 做同样的事情 有任何想法吗 代码如下 但仅针对标准对象进行检查 因此传入任何对象都是有效的 import Vue
  • 在 javascript 中实现固定位置会导致 Safari 滚动时出现抖动

    固定位置不适用于我的用例 因为它固定在浏览器窗口上 您可能会处于文本在屏幕右侧之外且无法到达的状态 无论如何 我尝试使用绝对定位 然后调整javascript中的 顶部 它在 Firefox 和 Chrome 中运行良好 但在 Safari
  • 在循环中调用 setTimeout 未按预期工作

    下面的 JavaScript 应该 在我看来 以 0 5 秒的间隔播放一系列音符 但它会将它们全部作为一个同时的和弦来演奏 知道如何修复它吗 function playRecording if notes length gt 0 for v
  • 如何使用 NextJS 使用自托管字体face?

    使用 NextJS 的字体 我已经阅读了有关如何在 NextJS 中使用自托管字体的不同主题 我得到了什么 wait compiling 当我这样做时 font face font family montserrat src url myp
  • javascript:完全删除top.location.hash?

    如果我的地址栏中已经有一个哈希值 例如domain com whatever 我打电话 top location hash wathever 被转换为domain com 没有任何内容 是否可以完全删除哈希值 所以没有 left 因为如果我
  • Html5画布最热门的任意形状

    我正在尝试开发可以在画布中渲染图像和文本的程序 我尝试处理画布中图像的点击 但它适用于可矩形图像 我的问题 您是否知道处理单击画布中图像的可见部分 非透明部分 的解决方案或框架 我正在寻找 ActionScript hitTestObjec
  • 如何从 Cloud Functions for Firebase 文件夹读取证书文件

    我正在尝试读取 certs 文件夹下的文件 如下所示 functions certs idp public cert perm 这是我用来读取文件的代码 fs readFileSync path join dirname certs idp

随机推荐

  • HTTP 动词 - 何时使用 GET/POST/PUT/Delete

    当您从事 RESTFUL 服务时 您经常会听到这些术语GET POST PUT DELETE 我的问题是这么多动词背后的想法是什么 我可以在以下人的帮助下实现一切GET动词或者如果我想在消息正文中发布一些大数据 我可以使用POST动词 我认
  • 从 Rails 生成 PDF

    The Ruby On Rails Wiki 列出了几个库 http wiki rubyonrails org rails pages HowtoGeneratePDFss 促进PDF一代在Rails 我需要打印地址标签 以字母格式 因此每
  • 如何为 VisualVM“<未知应用程序>”命名?

    JDK 1 6 捆绑了一个名为 VisualVM 的便捷工具 可让您检查正在运行的 Java 进程并与之交互 其中一项功能是它会自动检测本地计算机上正在运行的 JVM 大多数被列为 pid xxxx 但有些有名称和图标 例如 VisualV
  • REGEXP_EXTRACT(word,r'(\w\w\'\w\w)') 中 r 的含义是什么

    我在 BigQuery 中都找不到答案参考 https cloud google com bigquery query reference regularexpressionfunctions or re2 wiki https code
  • 如何获取 PyObject 的引用计数?

    如何获取a的引用计数PyObject来自 C 有功能Py INCREF and Py DECREF增加 减少它 但我还没有找到任何返回对象引用计数的函数 我需要它用于调试目的 每个对象的引用计数都存储在PyObject本身 在一个名为的变量
  • 同时创建新文件[重复]

    这个问题在这里已经有答案了 为了创建一个新的 唯一的文件名 我使用以下代码 File file new File name synchronized sync int cnt 0 while file exists file new Fil
  • 对于动态元素,scroll() 在 jQuery 中不起作用

    我正在使用以下内容 这不适用于动态创建的元素 我正在使用 jQuery 1 4 2 wrapper1 live scroll function alert 123 wrapper2 scrollLeft wrapper1 scrollLef
  • 净::ERR_INCOMPLETE_CHUNKED_ENCODING

    我使用 htaccess 将 URL 从 someurl com 重写为 someurl com public www 根目录中的第一个 htaccess 包含以下内容 DirectoryIndex public RewriteEngine
  • 交替组合两个等长向量[重复]

    这个问题在这里已经有答案了 我在挣扎 我觉得必须有一种很好的矢量化方法来做到这一点 但我只是没有找到它 我目前有两个等长的向量 我想将它们组合起来 但我想要向量 1 中的第一个元素 然后是向量 2 中的第一个元素 然后是向量 1 中的第二个
  • Django:模型上次修改日期和修改数量

    我有一个名为的 django 模型Blog 我想在当前模型中添加一个用于 last modified date 的字段 我知道如何设置默认值 但我希望它能够在我通过管理界面修改博客条目时自动更新 有没有某种方法可以强制将此值设置为每个管理站
  • 选择单列中的多行,以换行符分隔

    我有一个表 其值如下所示 Id Name Fruit 1 Jon Apple 2 Jon Orange 3 Jon Grape 4 Mike Apple 5 Mike Orange mysql中如何将列区分为类似这样的内容 Name Fru
  • JSX:内联条件属性 [href]

    我正在 jsx 中寻找 Href 属性的内联条件解决方案 如果我提供网址 我想输出 a href example url Logo a 如果不 a Logo a 最简单的解决方案 React 删除值为以下的属性undefined or nu
  • 范围输入跑步者进度填充颜色

    I m working with the range input here I m trying to add color to the slider thumb before I had tried using background gr
  • PartialView 作为字符串 + JsonResult

    我只是在寻找一种好方法 如何从服务器返回 JSON 对象 其中包含部分视图的 html 和一些附加数据 如果需要 我在用着蒂姆 斯科特的方法 https stackoverflow com questions 483091 render a
  • Node.js for循环中的mysql查询

    我有两个疑问 首先 SELECT auctions name wowitemdata itemName auctions itemId auctions buyout auctions quantity FROM auctions INNE
  • 如何在 Vim 中替换一个文件夹中的所有文件?

    我知道通过输入以下内容 s iwanthis replacedbythis g 将更改文件的所有匹配单词 如何对文件夹中的所有文件执行相同的操作 实际上替换了很多这样的单词 padding bottom 5px 打开 Vim 将所有文件加载
  • 无状态协议是否比有状态协议更适合使用?

    我可以看到 有状态的协议可以减少像 cookie 这样的 模拟状态 但是测试变得更加困难 以确保您的实现正确并重新连接 并且会话继续可能很难处理 始终使用无状态协议是否被认为是更好的做法 或者它确实是特定于领域的 我认为在处理有状态协议时身
  • 从 webview 的 Javascript 界面更新 UI 会使应用程序崩溃

    我正在开发混合网络视图 本机应用程序 并且遇到了应用程序崩溃的问题 以下是简要概述 应用程序位于单个 FrameLayout 中 顶部有一个 LinearLayout 我在左侧和右侧放置一个按钮 在中间和下面放置我的应用程序徽标 我有我的
  • MySQL插入语句队列

    我们正在构建一个 ajax 应用程序 其中用户输入被提交到 php 脚本进行处理 我们目前正在将每个请求写入日志文件以进行跟踪 我想将此跟踪移至数据库表中 但我不想在请求后运行插入语句 我想做的是建立一个需要在 MySQL 数据库上处理的事
  • 将 SweetAlert2 与 TypeScript 结合使用,找不到模块“sweetalert2/dist/sweetalert2.js”的声明文件

    我正在将我的一个项目迁移到 TypeScript 在该项目中甜蜜警报2 https sweetalert2 github io 使用库 导入 SweetAlert2 JS 和 CSS 的默认方式是 import Swal from swee