首页 > 解决方案 > 在 Parcel 2 中从 Javascript 导入非代码资产 (.png) 显示 ts 错误

问题描述

我正在使用Parcel v2捆绑器。它说以下关于导入静态文件:

如果您想从 Javascript 将 url 导入到图像(或声音文件等),您需要在模块说明符之前添加 url: (在插件配置中阅读有关命名管道的更多信息)

我已经尝试添加url:以及 v1 中的标准方法。图像已正确捆绑,但我不断收到此 ts 错误:

找不到模块 'url:../assets/parcel.png' 或其对应的类型声明。ts(2307)

错误 ts(2307) 是 VSCode

我有以下内容tsconfig.json

{
    "compilerOptions": {
        "jsx": "react",
    },
}

由于 Parcel 捆绑没有问题,我假设这与一些缺少的 TypeScript 配置有关。请您确认一下好吗?

标签: typescriptbabeljsparceljs

解决方案


基本上,这就是正在发生的事情,来自TypeScript:Handbook,Working with Other JavaScript Libraries

为了描述不是用 TypeScript 编写的库的形状,我们需要声明库公开的 API。

我们将未定义实现的声明称为“环境”。通常,这些是在 .d.ts 文件中定义的。如果您熟悉 C/C++,您可以将这些视为 .h 文件。

.d.ts使用以下内容在根目录中创建一个应该可以完成工作:

declare module 'url:*' {
  export default string;
}

有关任何其他问题或问题,请参阅 Parcel 的 Github 中的此讨论


推荐阅读