共计 2086 个字符,预计需要花费 6 分钟才能阅读完成。
报错
cannot contain ES module exports vue/no-export-in-script-setup
vue3-json-schema-form 课程中 StringField.vue 照着打报错
原代码如下:
template>
input type="text" :value="value" @input="handleChange" />
template>
`script lang="ts" setup="props">
import { ref } from 'vue'
import { FiledPropsDfine, Schema } from '../types'
export default {
props: FiledPropsDfine,
}
declare const props: {
value: any
onChange: (v: string) => void
schema: Schema
}
export const handleChange = (e: any) => {
console.log(e)
props.onChange(e.target.value)
}
script>
修改后代码如下:
template>
input type="text" :value="value" @input="handleChange" />
template>
`script lang="ts" setup="props">
import { FiledPropsDfine, Schema } from '../types'
declare const props: FiledPropsDfine & {
value: any
onChange: (v: string) => void
schema: Schema
}
const handleChange = (e: any) => {
console.log(e)
props.onChange(e.target.value)
}
script>
type.ts 文件代码片段如下:
import {SchemaRefs} from 'ajv/dist/compile'
import {PropType} from 'vue'
export enum SchemaTypes {
'NUMBER' = 'number',
'INTEGER' = 'intrger',
'STRING' = 'string',
'OBJECT' = 'object',
'ARRSY' = 'array',
'BOOLEAN' = 'boolean',
}
type SchemaRef = {$ref: string} // 预先定义 可以使用 $ref 引用 schema
// type Schema = any
export interface Schema {
type: SchemaTypes | string // 加上 string 有利于类型的校验 要不然只能用 SchemaTypes.NUMBER 来使用类型
const?: any
format?: string
default?: any
properties?: {[key: string]: Schema | {$ref: string}
}
items?: Schema | Schema[] | SchemaRefs
dependencies?: {[key: string]: string[] | Schema | SchemaRef}
oneOf?: Schema[]
anyOf?: Schema[]
allOf?: Schema[]
// vjsf?: VueJsonSchemaConfig
required?: string[]
enum?: any[]
enumKeyValue?: any[]
additionalProperties?: any
additionalItems?: Schema
}
export const FiledPropsDfine = {
schema: {type: Object as PropTypeSchema>,
required: true,
},
value: {required: true,},
onChange: {type: Function as PropType void>,
required: true,
},
rootSchema: {type: Object as PropTypeSchema>,
required: true,
},
} as const
主要问题就是说 script 标签中加上 setup,代码块中不能再出现 export default 关键字,将该部分代码
export default {props: FiledPropsDfine,}
declare const props: {
// 向 ts 声明 props 的定义
value: any
onChange: (v: string) => void
schema: Schema
}
修改为:
declare const props: FiledPropsDfine & {
// 向 ts 声明 props 的定义
value: any
onChange: (v: string) => void
schema: Schema
}
正文完