Vue.js 单文件组件导入失败,“undefined has no properties”

Posted

技术标签:

【中文标题】Vue.js 单文件组件导入失败,“undefined has no properties”【英文标题】:Vue.js single file component fails to import, "undefined has no properties" 【发布时间】:2020-10-08 19:01:03 【问题描述】:

我有一个“Settings.vue”组件:

import MyDropdown from "./MyDropdown.vue";
export default 
  components: 
    MyDropdown,
  ,

还有一个“MyDropdown.vue”组件:

export default 
    props: 
        value: 
            type: String,
        ,
        label: 
            type: String,
            default: this.$t("label"),
        ,
    ,
;

在构建时,我收到以下错误:

[Vue warn]: Failed to resolve async component: function MyDropdown() 
      return __webpack_require__.e(/*! import() */ 21).then(__webpack_require__.bind(null, /*! @/components/control/MyDropdown.vue */ "./src/components/control/MyDropdown.vue"));
    
Reason: TypeError: undefined has no properties vue.runtime.esm.js:619

什么可能导致 TypeError?

【问题讨论】:

【参考方案1】:

在 MyDropdown.vue 组件中,label prop 的默认值应该是工厂函数,而不是值。

Object or array defaults must be returned from a factory function,

尽管这种情况下的默认值将解析为字符串,但由于它使用this.$t 函数,看起来使用工厂是正确的方法。

default: this.$t("label"),

应该是

default: () => this.$t("label"),

【讨论】:

以上是关于Vue.js 单文件组件导入失败,“undefined has no properties”的主要内容,如果未能解决你的问题,请参考以下文章

不构建单页应用程序时,如何构建 Vue.js 单文件组件并导入它们?

无法将 ES6 模块导入 Vue 单文件组件

Vue.js 加载单文件组件

在 Vue.js 单文件组件中使用 jQuery 插件

如何在后台保持加载一个 vue.js 单文件组件?

vue中创建全局单文件组件/命令