Javascript vue.js Uncaught SyntaxError:已声明标识符

Javascript vue.js Uncaught SyntaxError:已声明标识符,javascript,vue.js,Javascript,Vue.js,我有两个演示相同的图书馆下,与 主要区别在于,一个用于浏览器使用,另一个用于节点使用 但是浏览器会有错误 index.js:1 Uncaught SyntaxError: Identifier 'HeaderComp' has already been declared 主要原因是什么 更新: 请记住,我不会两次声明变量!我还尝试在顶部添加控制台日志,以确保脚本执行一次 var HeaderComp = { name: 'HeaderComp', template: ` Back

我有两个演示相同的图书馆下,与

主要区别在于,一个用于
浏览器
使用,另一个用于
节点
使用

但是
浏览器
会有错误

index.js:1 Uncaught SyntaxError: Identifier 'HeaderComp' has already been declared
主要原因是什么

更新:

  • 请记住,我不会两次声明变量!我还尝试在顶部添加控制台日志,以确保脚本执行一次

    var HeaderComp = { name: 'HeaderComp', template: ` Back {{ r.title }} `, mixins: [VueTopDown.VueTopDownItem], computed: { routes () { return [ { href: '/page', title: 'Page' }, { href: '/hello-vue', title: 'HelloVue' } ] } } } var FooterComp = { name: 'FooterComp', template: `{{ vueFooter }}`, mixins: [VueTopDown.VueTopDownItem], data () { return { vueFooter: 'This is Vue Footer' } } } var ContentComp = { name: 'ContentComp', template: ``, mixins: [VueTopDown.VueTopDownItem], computed: { innerHTML () { var root = document.createElement('div') root.innerHTML = this[VTDConstants.OUTER_HTML] return root.querySelector('*').innerHTML } } } var HelloVue = { template: `Hello Vue`, props: ['clazz'], inheritAttrs: false } var Page = { template: ``, props: ['clazz', 'innerHTML'], inheritAttrs: false } var router = new VueRouter([ { path: '/hello-vue', component: HelloVue }, { path: '/page', component: Page }, { path: '*', redirect: '/page' } ]) var inst = new Vue({ router, mixins: [VueTopDown.VueTopDown], components: { HeaderComp: HeaderComp, FooterComp, ContentComp }, data () { return { [VueTopDown.VTDConstants]: { 'header': HeaderComp, 'footer': FooterComp, '.content': ContentComp } } } }) inst.$mount('#app') var HeaderComp={ 名称:'HeaderComp', 模板:` 返回 {{r.title}} `, mixins:[VueTopDown.VueTopDownItem], 计算:{ 路线(){ 返回[ {href:'/page',标题:'page'}, {href:'/hello vue',标题:'HelloVue'} ] } } } var FooterComp={ 名称:'FooterComp', 模板:`{vueFooter}}}`, mixins:[VueTopDown.VueTopDownItem], 数据(){ 返回{ vueFooter:'这是Vue页脚' } } } var ContentComp={ 名称:'ContentComp', 模板:``, mixins:[VueTopDown.VueTopDownItem], 计算:{ innerHTML(){ var root=document.createElement('div') root.innerHTML=此[VTDConstants.OUTER\u HTML] 返回root.querySelector('*').innerHTML } } } 变量HelloVue={ 模板:`Hello Vue`, 道具:['clazz'], 继承属性:false } 变量页={ 模板:``, 道具:['clazz','innerHTML'], 继承属性:false } var路由器=新的VueRouter([ {path:'/hello vue',组件:HelloVue}, {路径:'/page',组件:page}, {路径:'*',重定向:'/page'} ]) var inst=新的Vue({ 路由器, mixins:[VueTopDown.VueTopDown], 组成部分:{ 校长:校长, 页脚比较, 内容公司 }, 数据(){ 返回{ [VueToDown.VTDConstants]:{ “header”:HeaderComp, “页脚”:页脚组合, “.content”:ContentComp } } } }) 安装$mount(“#应用程序”)
  • 还要记住,类似的代码在
    节点
    环境中工作正常,但在
    浏览器
    中失败

  • 如果注释掉
    inst.$mount(“#app”)

  • 期待


    浏览器
    的预期行为应与
    节点
    的预期行为相同

    我进行了重新开放投票。OP就在这里。错误消息显然是由vue.js引起的。不知何故,它会在某个地方重新声明文件的内容。请使用
    var
    作为解决方法,而不是
    const
    let
    @Adelin恐怕这不是一个解决方法。它将遇到没完没了的电话。这可能是
    vue
    中的一个问题,或者我对自定义渲染的使用不正确。我在官方论坛上提交了一个主题,以咨询
    vue
    核心团队以获得支持。好的,但正如您所知,用let或const停止无休止的呼叫也不是一个解决方案。我也有同样的问题。我安装应用程序的目标div没有结束标记。