【发布时间】:2021-12-05 11:46:29
【问题描述】:
我不确定这是代码、配置还是 IDE 问题。使用 Jetbrains Rider。
我正在尝试在非模块化 JavaScript 中使用 KonvaJS,这让我抓狂。我正在进行的项目正在重新架构,因此虽然它最终将包含模块,但目前还没有。
我希望能够使用 Konva 类型,IDE 似乎不会自动识别它们。我希望能够像这样声明一个变量
let stage : Konva.Stage
在这种情况下,Rider 会尝试自动导入 Konva 命名空间。
import Konva from “konva”
这确实会导致 IDE 正确识别类型,但是一旦编译了 typescript,我就会收到语法错误Cannot use import statement outside a module
我的脚本不在模块中,请注意我通过 CDN 引用 Konva JavaScript 文件并且不希望在本地编译它可能很重要。我只是想让 IDE 识别类型。
我在 Konva 的 commonjs 网站上看到了这个:
const Konva = require('konva/cmj').default;
这也给了我require is undefined
但是,当我尝试执行 let stage : Konva.Stage 时,无法识别 Konva 命名空间(尽管在表达式中似乎可以访问)。我也尝试过使用或只是将.d.ts 文件放在同一目录中,但无济于事。
我对 JQuery 没有任何问题,这是我唯一的其他外部依赖项。
如果我不导入或不需要任何东西,只是让IDE充满错误,代码编译后实际上运行完美
最小可重现示例:
这是一个设计为使用 Rider 打开的 .NET 解决方案,但是这可以专门通过 typescript 完成。相关文件都在wwwroot目录下。 @types/jquery 和 konva 是已安装的 npm 包,尽管这两个库都被使用的本地文件/CDN 引用。
https://www.icloud.com/iclouddrive/0vOxLlg9JB0nJQpAbClrbg8hA#KonvaTest
编辑:我将我的几个代码文件放入模块中并设置所有内容以使用它。事情变得更糟了,再次具体到导入 konva!我在很大程度上得出的结论是,我将不得不编写自己的 Canvas 库(可能是目前最快的解决方案)或编写类型声明文件。考虑到 konva 类型的文件数量,这是一项繁琐而艰巨的任务。如果有人想以 100 美元左右的价格做到这一点,请告诉我????
【问题讨论】:
-
你能像
import type Konva from “konva”一样使用theimport typesyntax吗?如果没有,您能否生成一个 minimal reproducible example 某人可以放入他们自己的 IDE 以重现该问题?或者也许提供一个正确配置的 Web IDE 项目的链接,以显示您所看到的? -
我无法让它工作,但自从我广泛尝试以来已经有几个月了。每当我将“moduleResolution”设置为 Node 时,应用程序就会中断。在这种情况下,它会在运行时中断的文件底部添加一个 export{} (
Uncaught SyntaxError: Unexpected token 'export)。我不能在编译的 Javascript 中进行任何导入/导出。当尝试将其用作值时,它还存在在 IDE 中不给我错误的问题。如果我的代码类似于new Konva.Group(),我会收到错误Konva' cannot be used as a value because it was imported using 'import type'. -
我在主帖中添加了一个示例项目。
-
我无法对那个例子快速做任何事情,所以我可能无法理解它。如果您可以配置一个 Web IDE 项目,那么某人只需单击即可查看发生了什么,这将降低进入门槛并让您更有可能获得有用的答案。
标签: typescript jetbrains-ide konvajs