从 Parcel 2 中的 Javascript 导入非代码资产 (.png) 显示 ts 错误

Importing non-code asset (.png) from Javascript in Parcel 2 displays ts error

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

If you want import the url to an image (or a soundfile, etc.) from Javascript, you need to prepend url: to the module specifier (read more about named pipelines in Plugin Configuration)

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

Cannot find module 'url:../assets/parcel.png' or its corresponding type declarations. ts(2307)

我有以下 tsconfig.json:

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

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

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

To describe the shape of libraries not written in TypeScript, we need to declare the API that the library exposes.

We call declarations that don’t define an implementation “ambient”. Typically, these are defined in .d.ts files. If you’re familiar with C/C++, you can think of these as .h files.

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

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

如有任何进一步的疑问或问题,请参阅 Parcel 的 discussion。Github。