使用 typescript,渲染时提示未知的自定义组件
粉丝福利 : 关注VUE中文社区公众号,回复视频领取粉丝福利
目前的做法是这样的:
首先在 src
目录下写个 modules.d.ts
文件定义 vue 模块:
// modules.d.ts
declare module "*.vue" {
import Vue from "vue";
export default Vue;
}
然后打算在 components
文件夹下写一个 index.ts
来导入所有的组件,方便其他地方导入:
// components/index.ts
import App from './app/app.vue';
import Pager from './pager/pager.vue';
export { App, Pager };
最后在用到子组件的组件中用 vue-class-component
的 @Component
来注册子组件:
// components/app/app.ts
import { Pager } from '@/components';
@Component({
components: {
'pager': Pager
}
})
export default class App extends Vue {
}
但是渲染的时候子组件并没有被渲染出来,控制台报错:
[Vue warn]: Unknown custom element: <pager> \- did you register the component correctly? For recursive components, make sure to provide the "name" option.
这里如果我直接导入 vue 文件的话又能够正确渲染:
// components/app/app.ts
//import { Pager } from '@/components';
import Pager from '@/components/pager/pager.vue';
@Component({
components: {
'pager': Pager
}
})
export default class App extends Vue {
}
请问这种做法有错误吗,正确的做法应该是怎样的?
目录结构:
.
`-- src
|-- components
| |-- app
| | |-- app.css
| | |-- app.ts
| | `-- app.vue
| |-- index.ts
| `-- pager
| |-- pager.css
| |-- pager.ts
| `-- pager.vue
`-- modules.d.ts