1

我正在尝试让 ReasonML 与现有的 React 代码库一起工作。我没有使用create-react-app. 这是一个hand-built项目。在大多数情况下,看起来一切都设置得很好。但是,当我尝试使用默认编译bs.js文件运行 Webpack 时出现错误。

Error: Can't resolve '../lib/js/src/ReasonReact.js'

bsconfig.js的几乎是从 ReasonML 文档中直接复制/粘贴的:

{
  "name": "reason-react",
  "reason": {"react-jsx" : 2},
  "sources": ["src"],
  "package-specs": [{
    "module": "commonjs",
    "in-source": true
  }],
  "suffix": ".bs.js",
  "namespace": true,
  "bs-dependencies": ["reason-react"],
  "refmt": 3
}

Bucklescript 正在bs.js我期望的位置生成适当的文件。一切都很好。然而,Webpack 找不到它要找的东西,我并不感到惊讶。没有/lib/js/src/ReasonReact.js文件。有一个ReasonReact.js文件/lib/bs,一个在node_modules/reason-react/lib/js.

当我编辑已编译的 ReasonML 文件并将 ReasonReact 变量指向该node_modules ReasonReact.js文件时,一切正常。

我查看了一些教程和文章。也许我错过了一些东西,但我找不到任何关于我遇到的错误的信息。bs.js有没有人知道为什么编译文件中的路径会关闭?

4

1 回答 1

3

问题是您已经命名了您的项目reason-react。结合namespace打开,这会创建一个名为的本地命名空间模块ReasonReact,它会干扰依赖项的模块解析。

您可能只需设置namespacefalsein即可解决此问题bsconfig.json,因为这听起来不像您正在创建一个将被其他人使用的库,因此无论如何都不需要命名空间。但是您也应该避免使用与您的依赖项之一相同的名称,因为它很容易导致像这样令人困惑的问题。

请记住更改两者的名称bsconfig.jsonpackage.json避免出现问题。

于 2018-02-11T09:37:13.853 回答