调用生成器时 Vue Cli 远程预设崩溃

Posted

技术标签:

【中文标题】调用生成器时 Vue Cli 远程预设崩溃【英文标题】:Vue Cli remote preset crashes on Invoking Generators 【发布时间】:2020-12-08 04:15:58 【问题描述】:

我正在尝试在 github 上创建一个远程 vue cli 预设,但由于某种原因,我不断收到语法错误。

我的预设仓库:https://github.com/christoph-schaeffer/vue-preset

我输入的命令:vue create --preset christoph-schaeffer/vue-preset testProject

我得到的错误:

????  Invoking generators...
 ERROR  SyntaxError: Identifier 'router' has already been declared (15:7)
SyntaxError: Identifier 'router' has already been declared (15:7)
    at Object._raise (/usr/local/lib/node_modules/@vue/cli/node_modules/@babel/parser/lib/index.js:762:17)
    at Object.raiseWithData (/usr/local/lib/node_modules/@vue/cli/node_modules/@babel/parser/lib/index.js:755:17)
    at Object.raise (/usr/local/lib/node_modules/@vue/cli/node_modules/@babel/parser/lib/index.js:749:17)
    at ScopeHandler.checkRedeclarationInScope (/usr/local/lib/node_modules/@vue/cli/node_modules/@babel/parser/lib/index.js:4826:12)
    at ScopeHandler.declareName (/usr/local/lib/node_modules/@vue/cli/node_modules/@babel/parser/lib/index.js:4792:12)
    at Object.checkLVal (/usr/local/lib/node_modules/@vue/cli/node_modules/@babel/parser/lib/index.js:9367:22)
    at Object.checkLVal (/usr/local/lib/node_modules/@vue/cli/node_modules/@babel/parser/lib/index.js:865:15)
    at Object.parseImportSpecifierLocal (/usr/local/lib/node_modules/@vue/cli/node_modules/@babel/parser/lib/index.js:12706:10)
    at Object.maybeParseDefaultImportSpecifier (/usr/local/lib/node_modules/@vue/cli/node_modules/@babel/parser/lib/index.js:12751:12)
    at Object.parseImport (/usr/local/lib/node_modules/@vue/cli/node_modules/@babel/parser/lib/index.js:12677:31)

起初它工作得很好,然后我在 preset.json 中添加了几个东西以及一个生成器模板。

收到错误后,我尝试将整个 repo 恢复到它仍在工作时的状态。但是我仍然得到那个错误......

我猜这不是关于预设,而是我的全局 babel 包或其他什么的问题?

我正在使用 vue-cli 版本 4,并且正在使用 mac

任何关于我如何让这个运行的指导将不胜感激

【问题讨论】:

你确定不是***.com/q/36140252/4864628的问题? 你的意思是我可能要重新分配一个常量?我检查了我的模板中是否有任何名为 router 的变量,只有一个被分配然后导出。在生成器/模板/src/router/index.js 中。奇怪的是,即使我删除了整个模板生成器,我仍然会收到该错误。即使只有preset.json。 【参考方案1】:

我找到了问题。

首先:vue cli 似乎以某种方式缓存了远程预设。这就是为什么即使在还原更改后它也不起作用的原因。

实际的问题是,main.js 不应该像其他模板文件一样被更改,需要特别注意。由于某些奇怪的原因,一旦您的模板中有 main.js,它就会给出这些随机错误。

如果有人对如何在预设中修改 main.js 感到好奇,请查看: https://cli.vuejs.org/dev-guide/plugin-dev.html#changing-main-file

【讨论】:

以上是关于调用生成器时 Vue Cli 远程预设崩溃的主要内容,如果未能解决你的问题,请参考以下文章

Vue CLI 预设Presets

vue-cli#2.0项目结构分析

vue-cli#2.0项目结构分析

当属性不是 src 时如何让 Vue CLI 生成的项目替换图像 src

vue-cli生成项目后添加静态资源,第三方js库

从 CLI 生成的新 vue 3 项目的单元测试中出错