在 elm 中使用两个同名的不同模块

Using two different modules with the same name in elm

我用openapi-generator-cli to generate the elm code for REST apis that are described using OpenAPI.

到目前为止,基本上这对我来说效果很好。但现在我有一个问题,我想访问在单独的 OpenAPI 文档中描述的两个微服务。问题是,openapi-generator 为它生成接口的每个 REST API 生成一个 ApiApi.Data 模块。我已经检查了openapi-generator中的模板,但是这些模块名称是固定的,不能更改。

所以我想知道:是否有可能以某种方式在一个 elm 项目中使用两个包,它们包含具有相同名称的模块?关于如何在一个 elm 项目中使用两个单独的 API 还有其他想法吗?

如果我没误会你的话,你可以试试:

import Foo.Api as FooApi
import Bar.Api as BarApi

没有。 Elm 中的模块名称需要不同。同一个项目中不能有两个同名的模块。您将收到以下错误:

Detected problems in 1 module.
-- AMBIGUOUS IMPORT ----------------------------------------------- src/Main.elm

You are trying to import a `Foo` module:

3| import Foo
          ^^^
But I found multiple files in your "source-directories" with that name:

    src/Foo.elm
    src2/Foo.elm

Change the module names to be distinct!

您将需要重命名其中一个生成项目的模块。我建议自动重命名。

This project 解决了类似的问题,所以也许它可以提供有用的启发。

最简单的方法可能是分叉生成器并为模块前缀添加一个选项(并可能将其贡献回来,因为它似乎是一个普遍有用的选项;elm-graphql 已经有了这个)。