- javascript/
- Javascript vue.js Uncaught SyntaxError:已声明标识符
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没有结束标记。