【问题标题】:Vue & Typescript: Image imports not foundVue 和 Typescript:找不到图像导入
【发布时间】:2019-06-04 20:19:04
【问题描述】:

问题

我目前正在使用 Typescript 开发一个 Vue 项目。在我的资产文件夹中,我有一些图像要使用单独的 Typescript 文件导入。


背景

此项目由 vue-cli 使用 Typescript 引导,版本 3.2.1。我尝试过的是使用 require 直接导入我的文件,但这不起作用。然后我尝试使用import 导入无济于事


代码

这是我尝试过的:

./src/myFile.ts
import Image from '@/assets/img/hello.png';

没用

./src/myFile.ts
import Image from '../assets/img/hello.png';

没用

./src/myFile.ts
const Image = require('../assets/img/hello.png');

没用


结果

捆绑器将抛出一个错误,沿着Relative modules were not found 的行,后跟文件的路径。我已确保路径正确,我怀疑这与 TypeScript 如何管理导入以及如何配置 Vue-cli 以捆绑我的文件有关。

截图

这是实际项目的截图。文件路径为./src/views/World/Combat/Game.ts

【问题讨论】:

  • The documentation 表示您的最后一次尝试(使用require)应该可以工作
  • 目前还不清楚图片的正确路径应该是什么。您能否分享一张同时显示myFile.tshello.png 的文件层次结构的屏幕截图?
  • @Phil 我已经添加了截图,谢谢指出

标签: typescript vue.js


【解决方案1】:

/src/ 中创建一个名为shims-png.d.ts 的文件,内容如下:

declare module "*.png" {
  const value: string;
  export default value;
}

停止并再次运行应用程序。

【讨论】:

  • 只是为了改进上面的答案;您可以创建一个名为“shims-png.d.ts”的文件(其内容将是答案代码)并将其放在与“main.ts”相同的目录中
  • 我还必须重新启动 webpack-dev-server 才能使其正常工作。不确定这是否是我的配置或开发服务器的一般情况,但请记住这一点。
  • 在我的情况下,我必须在 VSCode 停止显示错误之前重新启动它。
  • 不用重启VSCode,你可以重启语言服务器。 CTRL + SHIFT + P,然后输入“Vetur:重新启动 VLS(Vue 语言服务器)”。至少如果您使用的是 Vetur 扩展程序。
猜你喜欢
  • 2019-03-16
  • 2018-04-23
  • 2020-09-27
  • 2019-07-23
  • 2021-04-08
  • 2021-07-08
  • 2016-12-27
  • 2021-12-16
  • 2020-12-25
相关资源
最近更新 更多