我试图让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文件中关闭这个文件呢?
发布于 2018-02-11 09:37:13
问题是,您已经将项目命名为reason-react。与打开namespace相结合,这将创建一个名为ReasonReact的本地命名空间模块,它会干扰依赖项的模块解析。
您可能只需将namespace设置为false in bsconfig.json就可以解决这个问题,因为它听起来不像是要由其他人使用的库,因此无论如何也不需要名称空间。但是,您也应该避免使用与您的依赖项相同的名称,因为它很容易导致像这样的混淆问题。
请记住更改bsconfig.json和package.json中的名称以避免出现问题。
https://stackoverflow.com/questions/48729446
复制相似问题