Vuejs2 vue路由器可以';我无法访问我的组件

Vuejs2 vue路由器可以';我无法访问我的组件,vuejs2,vue-component,vuex,vue-router,Vuejs2,Vue Component,Vuex,Vue Router,正如所问,我的vue路由器似乎找不到我的组件 我需要说的是,我在用户输入之后添加了一个新的路由,然后我无法访问这个特定的路由。我在router.js中创建的静态路由仍在工作。 我已尝试使用全局导入组件 import componentName from "./views/componentName" Vue.component("componentName") 还尝试只在路由器或我放置链接的组件中导入该组件,该链接将我们发送到该组件 然后,我收到以下错误消息: [Vue warn]:装载组件失

正如所问,我的vue路由器似乎找不到我的组件

我需要说的是,我在用户输入之后添加了一个新的路由,然后我无法访问这个特定的路由。我在
router.js
中创建的静态路由仍在工作。 我已尝试使用全局导入组件

import componentName from "./views/componentName"
Vue.component("componentName")
还尝试只在路由器或我放置链接的组件中导入该组件,该链接将我们发送到该组件

然后,我收到以下错误消息:

[Vue warn]:装载组件失败:未定义模板或渲染功能

这是我的密码:

router.js:

import Vue from "vue";
import Router from "vue-router";
Vue.use(Router);
import About from "./views/About.vue";
import Menu from "./views/Menu.vue";
import Home from "./views/Home.vue";
import Test from "./views/Test.vue";
export default new Router({
  routes: [
  {
    path: "/home",
    name: "home",
    component: Home
  },
  {
    path: "/about",
    name: "about",
    component: About
  },
  {
    path: "/menu",
    name: "menu",
    component: Menu
  }
  ]
});
main.js:

import Vue from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";
import componentPlugin from "./componentPlugin";
import BootstrapVue from "bootstrap-vue";
import "bootstrap/dist/css/bootstrap.css";
import "bootstrap-vue/dist/bootstrap-vue.css";

Vue.config.productionTip = false;

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount("#app");
Vue.use(componentPlugin);
Vue.use(BootstrapVue);
组件插件:

import List from "./components/List.vue";
import MainMenu from "./components/MainMenu.vue";
import Test from "./views/Test.vue";
import About from "./views/About.vue";
import Menu from "./views/Menu.vue";
import Home from "./views/Home.vue";

export default {
  install(Vue) {
    Vue.component("List", List);
    Vue.component("MainMenu", MainMenu);
    Vue.component("Test", Test);
    Vue.component("About", About);
    Vue.component("Menu", Menu);
    Vue.component("Home", Home);
  }
};
List.vue:

<template>
<div>
    <div v-if="title === 'Create new Project'">
        <button @click="nepro = !nepro">{{ title }}</button>
    </div>
    <div v-if="title !== 'Create new Project'">
        <b-container>
            <b-row>
                <b-col>
                    <p>{{ title }}</p>
                    <div id="nav">
                        <router-link :to="'/' + title">{{ title }}</router-link>
                    </div>
                    <router-view></router-view>
                </b-col>
                <b-col><button @click="delProject(id)">X</button></b-col>
            </b-row>
        </b-container>
    </div>
    <div v-if="nepro" @keydown.enter="newProject(projectName)">
        <label for="qwer">Insert Name here: </label>
        <br>
        <input id="qwer" type="text" v-model="projectName">
        <button :disabled="this.$store.state.projectname.length == 0" @click="newProject(projectName)">Finish</button>
    </div>
</div>
</template>

<script>
import { mapGetters } from "vuex";
import Test from "/home/pc-praktikant/VUE/test/src/views/Test.vue";
import About from "/home/pc-praktikant/VUE/test/src/views/About.vue";
export default {
  name: "List",
  components: {
    Test,
    About
  },
  props: {
    title: String,
    id: Number
  },
  data: function() {
    return {
      nepro: false
    };
  },
  watch: {
    reloaded: function() {
      this.newRoute();
    }
  },
  computed: {
    projectName: {
      get() {
        return this.$store.state.projectname;
      },
      set(newVal) {
        this.editProjectName(newVal);
      }
    },
    ...mapGetters({
      reloaded: "getReloaded"
    })
  },
  methods: {
    newRoute() {
      this.$router.addRoutes([
        { path: "/addedRoute", component: { name: "About" } }
      ]);
    },
    newProject(name) {
      this.$store.dispatch("newProject", {
        id: this.$store.getters.getProjectNumber,
        title: this.$store.state.projectname,
        compRate: 0
      });
      this.$store.dispatch("newRoute", {
        path: "/" + name,
        name: name,
        comp: name
      });
      this.$store.commit("newName", "");
      this.nepro = !this.nepro;
    },
    delProject(actualid) {
      this.$store.dispatch("delProject", actualid);
    },
    editProjectName(name) {
      this.$store.commit("newName", name);
    }
  }
};
</script>

<style>
</style>
此处指向
/菜单的链接转到一个组件,该组件为我的vuex商店中的每个项目调用
List.vue

store.js:

import Vue from "vue";
import Vuex from "vuex";

Vue.use(Vuex);

export default new Vuex.Store({
  state: {
    projects: [{ id: 0, title: "Create new Project", compRate: 0 }],
    globalid: 1,
    projectname: "",
    reloaded: 0
  },
  mutations: {
    newProject: (state, project) => {
      state.projects.push({
        id: project.id,
        title: project.title,
        compRate: project.compRate
      });
    },
    delProject: (state, id) => {
      state.projects.forEach(e => {
        if (id === e.id) {
          state.projects.splice(state.projects.indexOf(e), 1);
        }
      });
    },
    newName: (state, name) => {
      state.projectname = name;
    },
    newRoute: state => {
      state.reloaded++;
    }
  },
  actions: {
    newProject: ({ commit, state }, project) => {
      commit("newProject", {
        id: state.globalid,
        title: project.title,
        compRate: project.compRate
      });
      state.globalid++;
    },
    delProject: ({ commit }, id) => {
      commit("delProject", id);
    },
    newRoute: ({ commit }) => {
      commit("newRoute");
    }
  },
  getters: {
    getProjectNumber(state) {
      return state.projects.length;
    },
    getReloaded(state) {
      return state.reloaded;
    }
  }
});
我正在使用Vue v2.5.17和Vue路由器2.0


如果您需要更多信息,请告诉我。

您不能像这样全局定义组件。全局声明组件时,您忘记声明此组件的内容和功能。此问题已在错误报告中指出

正确的定义代码应该是这样的

import componentName from "./views/componentName"
Vue.component("componentName", componentName)
您可以在官方手册中找到并定义更多的组件和语料库定义

希望对你有帮助

import componentName from "./views/componentName"
Vue.component("componentName", componentName)