【问题标题】:VueJS compile failing when importing json data导入json数据时VueJS编译失败
【发布时间】:2020-07-25 12:24:03
【问题描述】:

我正在尝试在.Vue 文件的<script> 部分中导入静态.json 文件,就像import Test from '@assets/test.json' 一样

根据我对 webpack 的了解,这应该是开箱即用的。我还尝试在 webpack 解析中明确定义 .json 扩展名和加载程序下的 json 加载程序。

但是,对我来说它失败并出现错误:

ERROR  Failed to compile with 1 errors                                                                                                                                                                                                     9:14:24 AM

This dependency was not found:

* @assets/test.json in ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Settings.vue?vue&type=script&lang=js&

To install it, you can run: npm install --save @assets/test.json

这似乎很奇怪,因为它不是我能够安装的依赖项?

我的test.json 文件只包含{},但我也用真实的数据文件尝试过,结果相同。

提前感谢您的帮助。

编辑:感谢 @tao 在聊天中帮助我解决问题。错误确实是微不足道的:import Test from '@assets/test.json' 应该是 import Test from '@/assets/test.json'

【问题讨论】:

  • 这能回答你的问题吗? Importing json file in TypeScript
  • vuejs 默认使用 typescript 吗?我还没有明确地设置它。我确实在下面尝试了@tao 的答案,但这似乎没有帮助。如果 vuejs 默认使用 typescript,我将有更多的阅读要做!
  • 默认不使用打字稿。这取决于您的项目设置。当你创建它时,你会被问到几个问题,其中之一是你是否需要 typescript 支持和类组件。你的组件有lang="ts"吗?
  • 不,事实并非如此。如果有帮助,npm list vue 给我vue@2.6.11

标签: javascript vue.js npm webpack


【解决方案1】:

对于 typescript 支持,您必须添加

"resolveJsonModule": true,

compilerOptionstsconfig.json

并添加

declare module '*.json' {
  const value: unknown;
  export default value;
}

致您的shims-vue.d.ts


在 Javascript 中,您不需要做任何特别的事情。这应该有效:

test.json:

{
  "foo": "bar"
}

您的*.vue SFC 文件:

<script>
import * as json from './test.json';

export default {
  data: () => ({
    json
  }),
  mounted() {
    console.log(this.json)
  }
}
</script>

【讨论】:

  • 嗨@tao,非常感谢你的帮助——Vue 真的在后台使用打字稿吗?我已经尝试创建您的文件和上面提到的评论,但没有成功。对不起,如果我的问题很幼稚——我对 vuejs/js 很陌生,这是一个“边做边学”的小项目,但这个问题让我大吃一惊!
  • 不,与 Vue 3 不同,Vue 2 不使用“幕后”打字稿。但是 Vue 2 确实提供了 typescript 支持,并且根据您克隆的内容或创建项目的方式(以及从您的错误判断),您似乎启用了它。你的组件脚本标签有lang="ts"吗?
  • 您是否在控制台中遇到任何错误?你的 json 有效吗?
  • @nine,顺便说一句,只要将 json 内容包装到 export default {/*json here*/ }import * as json from './test' 中,您始终可以从 .js 文件中导入任何数据。但它确实应该也可以在.json 中工作。
  • 谢谢—我认为这是一种解决方法(或只是从外部 URL 加载),但想弄清楚如何以正确的方式进行操作,以便我了解错误是什么以及为什么会这样正在发生:)
猜你喜欢
  • 2018-11-06
  • 2021-12-28
  • 1970-01-01
  • 1970-01-01
  • 2017-10-08
  • 2016-11-20
  • 2021-12-26
  • 2019-03-20
  • 1970-01-01
相关资源
最近更新 更多