问题描述
我已经用Lerna和Yarn Workspaces建立了具有以下结构的monorepo:
project
| - packages
| - ReactNativeApp
| - NextJsApp
| - FirebaseCloudFunctions
| - Common
| - src > source TypeScript
| - lib > compiled TypeScript > published to npm for reuse by cloud functions in Firebase
| - AppsCommon
| - src > source TypeScript
| - lib > compiled TypeScript
我有几个问题。一个是React Native无法解析符号链接,另一个是从Firebase的错误消息,当从React Native Firebase传输到AppsCommon到ReactNativeApp时,来自Firebase的错误消息发生了改变,但是如果我在ReactNativeApp中复制AppsCommon源TypeScript则不会发生。
我认为我需要使用Yarn Workspaces,因为React Native无法很好地管理符号链接,这使得它的管理极为复杂。据我了解,这可以实现吗?
// replace
import { function } from '@project/appsCommon'
// by:
import { function } from '../../appsCommons'
我还尝试将package.json和tsconfig.json中的slib替换为src,以使其成为未编译的TypeScript软件包,但无法解决。
然后,我与Lerna尝试直接导入其他软件包的src文件夹。可能出什么问题了?
import { function } from '../../../common/src'
也许在React Native中是这样的:
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:mergeDexDebug'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
> java.nio.file.NoSuchFileException: C:\code\Experimental\monorepo\packages\mobile\android\common\build\intermediates\external_file_lib_dex_archives\debug\out
是的... Common中没有android文件,这是正常的,因为它们位于ReactNativeApp中...为什么在这里搜索它React Native ???
是否有创建未编译的TypeScript包的方法?还是处理此用例的简单方法?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)