在尝试开始使用 Reason 时,在一个 JavaScript 项目中,我有一个非常轻量级的文件,它试图成为现有重型库的 Reason 类型接口:
/* TheLibrary.re */
type engine
external addEngine : string -> engine -> unit = "" [@@bs.val] [@@bs.module "../"]
但是,当我尝试在 ReasonReact 项目(已添加到)中使用该库时,@org/the-library
bsconfig.json
bs-dependencies
/* AComponent.re */
[@bs.val] [@bs.module "@org/game-engine/dist/game-engine.js"]
external gameEngine : TheLibrary.engine = "default";
/* Further down, a React lifecycle method, */
TheLibrary.addEngine("Game", gameEngine);
相对于该 React 组件,我收到有关../
未找到的错误:
./src/components/main-menu/AComponent.re
Module not found: Can't resolve '../' in '/Users/ec/Work/reason-reacty/src/components/main-menu'
我也尝试过,而不是../
inTheLibrary.re
的external
声明:
@bs.module "./index.js"
(相关包的无类型 JavaScript 端的直接 ES6 入口点,)@bs.module "@org/the-library"
,所述库的全名(即使我在该库中输入???)
请帮忙!我希望能够进一步采用 ML,但我最难理解 ReasonReact 的依赖解析!
附加上下文:
因此,我们正在尝试构建我们的第一个 ReasonReact 项目,并且我们已经成功地将 baby's-first-opaque-types 添加到我们的一个内部库中,并将其包含在ReasonReact 页面中,如下所示 -由方法:
/* Imports.re */
type engine;
[@bs.val] [@bs.module "@org/game-engine/dist/game-engine.js"]
external gameEngine : engine = "default";
[@bs.val] [@bs.module "@org/the-library"] [@bs.scope "default"]
external addEngine : (string, engine) => unit = "";
这会产生,当我们Imports.(addEngine("Game", gameEngine))
,我们需要的全局设置行TheLibrary.addEngine("Game", GameEngine)
:我正处于尝试将输入信息上游到父项目的第一阶段,并将该代码发布到 npm,以便所有消费项目都可以开始使用 Reason。