Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

An error is still reported when the JSX example is loaded. #12

Open
zzcr opened this issue Aug 2, 2023 · 5 comments
Open

An error is still reported when the JSX example is loaded. #12

zzcr opened this issue Aug 2, 2023 · 5 comments

Comments

@zzcr
Copy link
Member

zzcr commented Aug 2, 2023

error tips: Identifier '_createVNode' has already been declared. (119:66)

@mengqiuleo
Copy link
Collaborator

能否给个demo链接?

@mengqiuleo
Copy link
Collaborator

出现这种报错的原因是:babel 转义 JSX 时,会导入一些依赖,比如:import createVNode as _createVNode, 同样的,vue在生成 render函数时,也会导入一些依赖,导致 _createVNode 被导入了两次

我目前的解决办法是,将 babel 的导入语句和 vue 的导入语句合并,相关代码在这:extractVueImportmergeVueImports
主要依靠 extractVueImportmergeVueImports 这两个函数,

可能我对于一些 边缘case 没有考虑到,能否给个 demo

@zzcr
Copy link
Member Author

zzcr commented Aug 3, 2023

https://opentiny.github.io/tiny-vue-playground/#eyJzcmMvQXBwLnZ1ZSI6Ijx0ZW1wbGF0ZT5cbiAgPHRpbnktZ3JpZCA6ZGF0YT1cInRhYmxlRGF0YVwiIGJvcmRlciA6ZWRpdC1jb25maWc9XCJ7IHRyaWdnZXI6ICdjbGljaycsIG1vZGU6ICdjZWxsJywgc2hvd1N0YXR1czogdHJ1ZSB9XCI+XG4gICAgPHRpbnktZ3JpZC1jb2x1bW4gdHlwZT1cImluZGV4XCIgd2lkdGg9XCI2MFwiPjwvdGlueS1ncmlkLWNvbHVtbj5cbiAgICA8dGlueS1ncmlkLWNvbHVtbiB0eXBlPVwic2VsZWN0aW9uXCIgd2lkdGg9XCI2MFwiPjwvdGlueS1ncmlkLWNvbHVtbj5cbiAgICA8dGlueS1ncmlkLWNvbHVtbiBmaWVsZD1cImVtcGxveWVlc1wiIHRpdGxlPVwi5ZGY5bel5pWwXCI+PC90aW55LWdyaWQtY29sdW1uPlxuICAgIDx0aW55LWdyaWQtY29sdW1uIGZpZWxkPVwiY3JlYXRlZERhdGVcIiB0aXRsZT1cIuWIm+W7uuaXpeacn1wiPjwvdGlueS1ncmlkLWNvbHVtbj5cbiAgICA8dGlueS1ncmlkLWNvbHVtbiBmaWVsZD1cImNpdHlcIiB0aXRsZT1cIuWfjuW4glwiPjwvdGlueS1ncmlkLWNvbHVtbj5cbiAgICA8dGlueS1ncmlkLWNvbHVtbiBmaWVsZD1cImJvb2xlXCIgdGl0bGU9XCLluIPlsJTlgLxcIiBhbGlnbj1cImNlbnRlclwiIGZvcm1hdC10ZXh0PVwiYm9vbGVcIiA6ZWRpdG9yPVwiY2hlY2tib3hFZGl0XCI+PC90aW55LWdyaWQtY29sdW1uPlxuICA8L3RpbnktZ3JpZD5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQgbGFuZz1cImpzeFwiPlxuaW1wb3J0IHsgR3JpZCwgR3JpZENvbHVtbiB9IGZyb20gJ0BvcGVudGlueS92dWUnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgY29tcG9uZW50czoge1xuICAgIFRpbnlHcmlkOiBHcmlkLFxuICAgIFRpbnlHcmlkQ29sdW1uOiBHcmlkQ29sdW1uXG4gIH0sXG4gIGRhdGEoKSB7XG4gICAgY29uc3QgdGFibGVEYXRhID0gW1xuICAgICAge1xuICAgICAgICBpZDogJzEnLFxuICAgICAgICBuYW1lOiAnR0ZE56eR5oqAWVjlhazlj7gnLFxuICAgICAgICBjaXR5OiAn56aP5beeJyxcbiAgICAgICAgZW1wbG95ZWVzOiA4MDAsXG4gICAgICAgIGNyZWF0ZWREYXRlOiAnMjAxNC0wNC0zMCAwMDo1NjowMCcsXG4gICAgICAgIGJvb2xlOiBmYWxzZVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWQ6ICcyJyxcbiAgICAgICAgbmFtZTogJ1dXV+enkeaKgFlY5YWs5Y+4JyxcbiAgICAgICAgY2l0eTogJ+a3seWcsycsXG4gICAgICAgIGVtcGxveWVlczogMzAwLFxuICAgICAgICBjcmVhdGVkRGF0ZTogJzIwMTYtMDctMDggMTI6MzY6MjInLFxuICAgICAgICBib29sZTogdHJ1ZVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWQ6ICczJyxcbiAgICAgICAgbmFtZTogJ1JGVuaciemZkOi0o+S7u+WFrOWPuCcsXG4gICAgICAgIGNpdHk6ICfkuK3lsbEnLFxuICAgICAgICBlbXBsb3llZXM6IDEzMDAsXG4gICAgICAgIGNyZWF0ZWREYXRlOiAnMjAxNC0wMi0xNCAxNDoxNDoxNCcsXG4gICAgICAgIGJvb2xlOiBmYWxzZVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWQ6ICc0JyxcbiAgICAgICAgbmFtZTogJ1RHQuenkeaKgFlY5YWs5Y+4JyxcbiAgICAgICAgY2l0eTogJ+m+meWyqScsXG4gICAgICAgIGVtcGxveWVlczogMzYwLFxuICAgICAgICBjcmVhdGVkRGF0ZTogJzIwMTMtMDEtMTMgMTM6MTM6MTMnLFxuICAgICAgICBib29sZTogdHJ1ZVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWQ6ICc1JyxcbiAgICAgICAgbmFtZTogJ1lITuenkeaKgFlY5YWs5Y+4JyxcbiAgICAgICAgY2l0eTogJ+mftuWFsycsXG4gICAgICAgIGVtcGxveWVlczogODEwLFxuICAgICAgICBjcmVhdGVkRGF0ZTogJzIwMTItMTItMTIgMTI6MTI6MTInLFxuICAgICAgICBib29sZTogdHJ1ZVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWQ6ICc2JyxcbiAgICAgICAgbmFtZTogJ1dTWOenkeaKgFlY5YWs5Y+4JyxcbiAgICAgICAgY2l0eTogJ+m7hOWGiCcsXG4gICAgICAgIGVtcGxveWVlczogODAwLFxuICAgICAgICBjcmVhdGVkRGF0ZTogJzIwMTEtMTEtMTEgMTE6MTE6MTEnLFxuICAgICAgICBib29sZTogdHJ1ZVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWQ6ICc3JyxcbiAgICAgICAgbmFtZTogJ0tCR+eJqeS4mllY5YWs5Y+4JyxcbiAgICAgICAgY2l0eTogJ+i1pOWjgScsXG4gICAgICAgIGVtcGxveWVlczogNDAwLFxuICAgICAgICBjcmVhdGVkRGF0ZTogJzIwMTYtMDQtMzAgMjM6NTY6MDAnLFxuICAgICAgICBib29sZTogZmFsc2VcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiAnOCcsXG4gICAgICAgIG5hbWU6ICfmt7HlnLPluILnpo/lvrflrp3nvZHnu5zmioDmnK9ZWOWFrOWPuCcsXG4gICAgICAgIGJvb2xlOiB0cnVlLFxuICAgICAgICBjaXR5OiAn5Y6m6ZeoJyxcbiAgICAgICAgY3JlYXRlZERhdGU6ICcyMDE2LTA2LTAzIDEzOjUzOjI1JyxcbiAgICAgICAgZW1wbG95ZWVzOiA1NDBcbiAgICAgIH1cbiAgICBdXG4gICAgcmV0dXJuIHtcbiAgICAgIG9wOiB7XG4gICAgICAgIGVkaXRDb25maWc6IHtcbiAgICAgICAgICB0cmlnZ2VyOiAnY2xpY2snLFxuICAgICAgICAgIG1vZGU6ICdjZWxsJyxcbiAgICAgICAgICBzaG93U3RhdHVzOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIGNvbHVtbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiAnaW5kZXgnLFxuICAgICAgICAgICAgd2lkdGg6IDYwXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0eXBlOiAnc2VsZWN0aW9uJyxcbiAgICAgICAgICAgIHdpZHRoOiA2MFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgZmllbGQ6ICdlbXBsb3llZXMnLFxuICAgICAgICAgICAgdGl0bGU6ICflkZjlt6XmlbAnXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmaWVsZDogJ2NyZWF0ZWREYXRlJyxcbiAgICAgICAgICAgIHRpdGxlOiAn5Yib5bu65pel5pyfJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgZmllbGQ6ICdjaXR5JyxcbiAgICAgICAgICAgIHRpdGxlOiAn5Z+O5biCJ1xuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgZmllbGQ6ICdib29sZScsXG4gICAgICAgICAgICB0aXRsZTogJ+W4g+WwlOWAvCcsXG4gICAgICAgICAgICBhbGlnbjogJ2NlbnRlcicsXG4gICAgICAgICAgICBmb3JtYXRUZXh0OiAnYm9vbGUnLFxuICAgICAgICAgICAgZWRpdG9yOiB0aGlzLmNoZWNrYm94RWRpdFxuICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgZGF0YTogdGFibGVEYXRhXG4gICAgICB9LFxuICAgICAgdGFibGVEYXRhXG4gICAgfVxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgY2hlY2tib3hFZGl0KGgsIHsgcm93IH0pIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgY2hlY2tlZD17cm93LmJvb2xlfVxuICAgICAgICAgIG9uQ2hhbmdlPXsoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIHJvdy5ib29sZSA9IGV2ZW50LnRhcmdldC5jaGVja2VkXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgIClcbiAgICB9XG4gIH1cbn1cbjwvc2NyaXB0PlxuIiwiaW1wb3J0LW1hcC5qc29uIjoie1xuICBcImltcG9ydHNcIjoge31cbn0iLCJ0c2NvbmZpZy5qc29uIjoie1xuICBcImNvbXBpbGVyT3B0aW9uc1wiOiB7XG4gICAgXCJhbGxvd0pzXCI6IHRydWUsXG4gICAgXCJjaGVja0pzXCI6IHRydWUsXG4gICAgXCJqc3hcIjogXCJwcmVzZXJ2ZVwiLFxuICAgIFwidGFyZ2V0XCI6IFwiRVNOZXh0XCIsXG4gICAgXCJtb2R1bGVcIjogXCJFU05leHRcIixcbiAgICBcIm1vZHVsZVJlc29sdXRpb25cIjogXCJCdW5kbGVyXCIsXG4gICAgXCJhbGxvd0ltcG9ydGluZ1RzRXh0ZW5zaW9uc1wiOiB0cnVlXG4gIH0sXG4gIFwidnVlQ29tcGlsZXJPcHRpb25zXCI6IHtcbiAgICBcInRhcmdldFwiOiAzLjNcbiAgfVxufVxuIiwiX28iOnt9fQ==

@zzcr
Copy link
Member Author

zzcr commented Aug 3, 2023

错误的链接已发

@mengqiuleo
Copy link
Collaborator

问题已修复

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants