使用 Typescript 在 vue.js 中加载 JSON 文件

Posted

技术标签:

【中文标题】使用 Typescript 在 vue.js 中加载 JSON 文件【英文标题】:Load JSON file in vue.js with Typescript 【发布时间】:2018-07-27 23:17:55 【问题描述】:

我使用 vue-cli 3 创建了一个带有 typescript 应用程序的 vue.js,并选择了 typescript 选项。

现在我正在尝试导入 .json 文件:

import * as config from './config.json';

但不断收到编译器错误:

Version: typescript 
2.7.17:25, tslint 5.9.1 
Cannot find module './config.json'.

config.json 文件就在尝试加载它的 .ts 旁边。

是否需要添加任何其他配置才能使用 vue-cli 模板加载 .json?

【问题讨论】:

【参考方案1】:

将 "resolveJsonModule": true 添加到您的 tsconfig.json

【讨论】:

【参考方案2】:

有几种方法可以解决这个问题。一种是对非 js 文件使用 require() 而不是 import:

const config = require('./config.json')

您还可以使用wildcard module declaration (under "Wildcard module declarations") 创建一个 .d.ts 文件,这将允许您导入 JS 文件。你可以把它放在任何地方,包括它,就像你放置任何 .ts 文件一样。

// json-module.d.ts
declare module '*.json' 
  const data: any
  export default data


// since we use a default export, we now import it like this
import config from './config.json'

【讨论】:

以上是关于使用 Typescript 在 vue.js 中加载 JSON 文件的主要内容,如果未能解决你的问题,请参考以下文章

(如何)我应该在 Vue.js 组件(TypeScript)中使用访问修饰符(公共、私有等)吗?

将 Typescript 与 Laravel 和 Vue.js 一起使用,导入不使其成为 Vue 组件?

如何将 TypeScript 与 Vue.js 和单文件组件一起使用?

在 Vue.js 中加载节点库

typescript 使用Typescript将属性添加到Vue.js中的数组

如何获得 Vue.js 2.0 类型的 TypeScript 与 Visual Studio 一起使用?