Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 导入外部单文件组件时出现问题(通过Vue CLI)_Javascript_Vue.js_Vue Cli_Vue Sfc - Fatal编程技术网

Javascript 导入外部单文件组件时出现问题(通过Vue CLI)

Javascript 导入外部单文件组件时出现问题(通过Vue CLI),javascript,vue.js,vue-cli,vue-sfc,Javascript,Vue.js,Vue Cli,Vue Sfc,我正在学习Vue,并尝试使用Vue cli构建第一个应用程序。 我有简单的本地组件,运行良好。 但是当我想使用外部组件时,我遇到了一个问题。 例如“vuetable-2”。 我使用终端通过npm本地安装: npm install --save vue-multiselect 安装成功,“vue multiselect”文件夹显示在“node_模块”目录中。然后在我的单个文件组件“ms.vue”文件中添加适当的引用: <template> <div>

我正在学习Vue,并尝试使用Vue cli构建第一个应用程序。 我有简单的本地组件,运行良好。 但是当我想使用外部组件时,我遇到了一个问题。 例如“vuetable-2”。 我使用终端通过npm本地安装:

npm install --save vue-multiselect 
安装成功,“vue multiselect”文件夹显示在“node_模块”目录中。然后在我的单个文件组件“ms.vue”文件中添加适当的引用:

<template>
    <div>
        Hello world!
        <label class="typo__label">Select with search</label>
        <multiselect v-model="value" :options="options" :custom-label="nameWithLang" placeholder="Select one" label="name" track-by="name"> 
        </multiselect>
        <pre class="language-json"><code>{{ value  }}</code></pre>
    </div>
</template>

<script>
    import Multiselect from 'vue-multiselect'
    export default {
        components: {
            Multiselect
        },
        data () {
            return {
                value: { name: 'Vue.js', language: 'JavaScript' },
                options: [
                    { name: 'Vue.js', language: 'JavaScript' },
                    { name: 'Rails', language: 'Ruby' },
                    { name: 'Sinatra', language: 'Ruby' },
                    { name: 'Laravel', language: 'PHP' },
                    { name: 'Phoenix', language: 'Elixir' }
                ]
            }
        },
        methods: {
            nameWithLang ({ name, language }) {
                return `${name} — [${language}]`
            }
        }
    }
</script>

<style>
</style>
<template>
    <div id="app">
        <img alt="Vue logo" src="./assets/logo.png">
        <ms></ms>                                         
    </div>
</template>

<script>
    import ms from './components/ms.vue'
    export default {
        name: 'App',
        components: {
            ms
        }
    }
</script>

<style>
</style>
从“vue Multiselect”导入Multiselect 导出默认值{ 组成部分:{ 多选 }, 数据(){ 返回{ 值:{name:'Vue.js',语言:'JavaScript'}, 选项:[ {name:'Vue.js',language:'JavaScript'}, {name:'Rails',language:'Ruby'}, {名称:'Sinatra',语言:'Ruby'}, {名称:'Laravel',语言:'PHP'}, {名称:'凤凰',语言:'长生不老药'} ] } }, 方法:{ nameWithLang({name,language}){ 返回`${name}-[${language}]` } } } 一切都编译得很好,但当我转到浏览器时,页面为空,控制台中出现以下错误:

runtime-core.esm-bundler.js?5c40:5435 Uncaught TypeError: selfHook.call is not a function  
  at callSyncHook (runtime-core.esm-bundler.js?5c40:5435)  
    at applyOptions (runtime-core.esm-bundler.js?5c40:5227)  
    at finishComponentSetup (runtime-core.esm-bundler.js?5c40:6006)  
    at setupStatefulComponent (runtime-core.esm-bundler.js?5c40:5942)  
    at setupComponent (runtime-core.esm-bundler.js?5c40:5882)  
    at mountComponent (runtime-core.esm-bundler.js?5c40:4161)  
    at processComponent (runtime-core.esm-bundler.js?5c40:4137)  
    at patch (runtime-core.esm-bundler.js?5c40:3784)  
    at mountChildren (runtime-core.esm-bundler.js?5c40:3950)  
    at mountElement (runtime-core.esm-bundler.js?5c40:3896)  
我试过使用其他组件,但得到了相同的错误

我的“App.vue”文件:

<template>
    <div>
        Hello world!
        <label class="typo__label">Select with search</label>
        <multiselect v-model="value" :options="options" :custom-label="nameWithLang" placeholder="Select one" label="name" track-by="name"> 
        </multiselect>
        <pre class="language-json"><code>{{ value  }}</code></pre>
    </div>
</template>

<script>
    import Multiselect from 'vue-multiselect'
    export default {
        components: {
            Multiselect
        },
        data () {
            return {
                value: { name: 'Vue.js', language: 'JavaScript' },
                options: [
                    { name: 'Vue.js', language: 'JavaScript' },
                    { name: 'Rails', language: 'Ruby' },
                    { name: 'Sinatra', language: 'Ruby' },
                    { name: 'Laravel', language: 'PHP' },
                    { name: 'Phoenix', language: 'Elixir' }
                ]
            }
        },
        methods: {
            nameWithLang ({ name, language }) {
                return `${name} — [${language}]`
            }
        }
    }
</script>

<style>
</style>
<template>
    <div id="app">
        <img alt="Vue logo" src="./assets/logo.png">
        <ms></ms>                                         
    </div>
</template>

<script>
    import ms from './components/ms.vue'
    export default {
        name: 'App',
        components: {
            ms
        }
    }
</script>

<style>
</style>

从“./components/ms.vue”导入ms
导出默认值{
名称:“应用程序”,
组成部分:{
太太
}
}
编辑2020-09-02:
我看到的是,该问题仅出现在Vue3中。当我在Vue2中重新创建整个项目时,一切都很好。但仍然不知道问题的核心原因