'figwheel'不是一个任务。

3

我一整天都很愉快地使用figwheel。我通过输入:cljs/quit终止了该进程。

当我尝试重新启动figwheel lein figwheel时,我收到了来自Leiningen的这条消息:

'figwheel' is not a task. See 'lein help'

运行lein help可以列出我可以执行的许多任务,但figwheel不在其中。

这是我的project.clj文件的样子(省略了一些额外的内容):

(defproject myproject
 ...
:dependencies [...]
:plugins [[lein-environ "1.0.2"]
          [lein-cljsbuild "1.1.1"]
          [lein-asset-minifier "0.2.4"]]
...
:profiles {:dev {:dependencies [...
                                [lein-figwheel "0.5.0-6"]
                                ...]
                 :plugins [[lein-figwheel "0.5.0-6"]
                           ...]
                 :figwheel {...}}}
 ...)

以下是我迄今为止尝试过的:

  • 确认我在正确的目录下
  • 检查自上次成功启动 figwheel 以来所做的所有代码更改
  • [lein-figwheel "0.5.0-6"]添加到基本:plugins向量中(这样有点起作用,但无法识别我的特定配置文件设置)
  • 重新启动电脑

你可以通过试错的方式消除错误信息,以便确定它似乎认为 figwheel 是一个任务的位置?此外,在出现类似问题时,始终进行 lein clean 是一个很好的第一步。然后,请仔细检查所有 { } 以确保它们真正分组在您认为应该的位置。 - Chris Murphy
好的,我已经找到了近因。我使用了lein-environ插件,并创建了一个profiles.clj文件。当我删除该文件时,lein figwheel可以正常工作。我还没有完全弄清楚为什么会这样,但至少现在我有了一个解决方法。 - detran
1个回答

2
您可以输入 lein help profiles 来了解有关配置文件的所有信息。在这种情况下,问题是由以下原因引起的:
请记住,如果在多个位置指定具有相同名称的配置文件,则仅选择具有最高“优先级”的配置文件 - 不执行合并。 从最高到最低,“优先级”分别为 profiles.clj、project.clj、用户范围的配置文件,最后是系统范围的配置文件。
它正在使用 profiles.clj 中的 :dev,其中没有 figwheel。 这也是为什么将 lein-figwheel 添加到基本的 :plugins 只是在某种程度上有所帮助,但不使用所有设置的原因。
文档中提供了一种简单明了的解决方案:
如果您需要启用对配置文件部分的个人覆盖,可以使用包含公共和个人部分的复合配置文件 - 类似于 :dev [:dev-common:dev-overrides];然后您只需在 project.clj 中拥有 :dev-overrides {} 并在 profiles.clj 中覆盖它即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接