javascript - 导入json数据时VueJS编译失败
问题描述
我正在尝试在像这样的文件部分中导入静态.json
文件<script>
.Vue
import Test from '@assets/test.json'
根据我对 webpack 的了解,这应该是开箱即用的。我还尝试明确定义.json
webpack resolve 中的扩展和加载器下的 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'
解决方案
对于打字稿支持,您必须添加
"resolveJsonModule": true,
到. compilerOptions
_tsconfig.json
并添加
declare module '*.json' {
const value: unknown;
export default value;
}
给你的shims-vue.d.ts
在 Javascript 中,您不需要做任何特别的事情。这应该有效:
test.json
:
{
"foo": "bar"
}
您的*.vue
证监会文件:
<script>
import * as json from './test.json';
export default {
data: () => ({
json
}),
mounted() {
console.log(this.json)
}
}
</script>
推荐阅读
- selenium - 从无限滚动网站中抓取内容
- javascript - Angular:类型 ArrayBuffer 不可分配给类型字符串
- python - tensorflow.keras.preprocessing.text.Tokenizer.texts_to_sequences 的 Numpy 数组给出了奇怪的输出, list([2]) 而不是 [[2]]
- multithreading - `mkl_set_num_threads` 会限制 CPU 线程的数量吗?
- mysql - 从有条件的两个表中删除行
- python - 如何将两个值组合成python中字典的一个键?
- php - Laravel 分页链接在 View 中不起作用。获取错误方法 Illuminate\Database\Eloquent\Collection::links 不存在
- postgresql - SERIAL 用于另一列中的每个值
- laravel - 如果在 laravel 中选中了特定的复选框,如何要求一个字段?
- android - 渲染两个 RNCamera 组件时反应原生应用程序给出空白屏幕