标签: react-native-turbomodule

错误:解析模块时,发现 Haste 包。在包内找不到该模块

我正在尝试新的 React Native 架构。我已在我的文件中启用它gradle.properties。此错误仅适用于 Android,我还没有尝试过 iOS。

我正在遵循此处提到的计算器的确切示例。

我收到一条错误消息

error: Error: While resolving module `rtn-calculator/js/NativeCalculator.js`, the Haste package `rtn-calculator` was found. However the module `js/NativeCalculator.js` could not be found within the package. Indeed, none of these files exist:

  * `/Users/transformhub/Desktop/rnapp/RTNCalculator/js/NativeCalculator.js(.native|.android.js|.native.js|.js|.android.jsx|.native.jsx|.jsx|.android.json|.native.json|.json|.android.ts|.native.ts|.ts|.android.tsx|.native.tsx|.tsx)`
  * `/Users/transformhub/Desktop/rnapp/RTNCalculator/js/NativeCalculator.js/index(.native|.android.js|.native.js|.js|.android.jsx|.native.jsx|.jsx|.android.json|.native.json|.json|.android.ts|.native.ts|.ts|.android.tsx|.native.tsx|.tsx)`
    at resolveHasteName (/Users/transformhub/Desktop/rnapp/node_modules/metro-resolver/src/resolve.js:173:9)
    at Object.resolve (/Users/transformhub/Desktop/rnapp/node_modules/metro-resolver/src/resolve.js:63:20)
    at ModuleResolver.resolveDependency (/Users/transformhub/Desktop/rnapp/node_modules/metro/src/node-haste/DependencyGraph/ModuleResolution.js:111:31)
    at DependencyGraph.resolveDependency (/Users/transformhub/Desktop/rnapp/node_modules/metro/src/node-haste/DependencyGraph.js:260:43)
    at Object.resolve (/Users/transformhub/Desktop/rnapp/node_modules/metro/src/lib/transformHelpers.js:177:21)
    at Graph._resolveDependencies (/Users/transformhub/Desktop/rnapp/node_modules/metro/src/DeltaBundler/Graph.js:432:35)
    at Graph._processModule (/Users/transformhub/Desktop/rnapp/node_modules/metro/src/DeltaBundler/Graph.js:218:38)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async Graph._addDependency (/Users/transformhub/Desktop/rnapp/node_modules/metro/src/DeltaBundler/Graph.js:314:20)
    at async Promise.all (index 2)
Run Code Online (Sandbox Code Playgroud)

完整的仓库在这里

下面是示例代码 …

java android typescript react-native react-native-turbomodule

6
推荐指数
1
解决办法
785
查看次数

用 Rust 编写 React Native“Turbo 模块”

React Native 最近引入了对Turbo Modules的实验性支持,它允许开发人员用 C++ 编写代码并直接从 Javascript 调用它。

是否可以用 Rust 而不是 C++ 编写 Turbo 模块?一般来说,Rust 与 C / C++ 具有良好的互操作性,所以我希望这是可能的,但在搜索 Google、StackOverflow、GitHub 等后我找不到任何示例。

如果可能的话,这样做有什么缺点吗?例如,您是否丢失了打字信息?

rust react-native react-native-turbomodule

5
推荐指数
1
解决办法
901
查看次数

如何在 React Native Turbo 模块中使用 Swift

我按照此处的指南创建了一个涡轮模块。这很好。

https://reactnative.dev/docs/the-new-architecture/pillars-turbomodules

我想在这个 Turbo 模块中使用 Swift 代码。我尝试使用此代码添加一个 Swift 文件并修改 ,RTNCalculator.mm以便在从 Objective-C 调用的 Swift 中进行数字添加。

SwiftCalculator.swift

import Foundation

@objc class SwiftCalculator: NSObject {
    @objc func add(a: Double, b: Double) -> Double {
        return a + b
    }
}
Run Code Online (Sandbox Code Playgroud)

RTN计算器.mm

#import "RTNCalculatorSpec.h"
#import "RTNCalculator.h"
#import "RTNCalculator-Swift.h"

@implementation RTNCalculator

RCT_EXPORT_MODULE()

- (void)add:(double)a b:(double)b resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject {
    SwiftCalculator *calculator = [SwiftCalculator new];
    double value = [calculator addWithA:a b:b];
    NSNumber *result = [[NSNumber alloc] initWithDouble:value];
    resolve(result);
}

- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
    (const facebook::react::ObjCTurboModule::InitParams &)params
{ …
Run Code Online (Sandbox Code Playgroud)

objective-c swift objective-c-swift-bridge react-native react-native-turbomodule

5
推荐指数
1
解决办法
729
查看次数

如何在 iOS 上的 Turbo 模块中发出事件

我正在按照此处的指南在 React Native 中创建 Turbo 模块。 https://reactnative.dev/docs/next/the-new-architecture/pillars-turbomodules

如何在 iOS 上发出事件?该文档仅显示如何从 React 调用本机函数,而不显示如何从 Turbo 模块发出事件。

对于 Android,您将获得一个ReactApplicationContext对象,它允许您使用上下文对象创建像这样的发射器。

private val emitter = context.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
emitter.emit(eventName, eventArray)
Run Code Online (Sandbox Code Playgroud)

你如何在 iOS 上做同样的事情?

c++ java objective-c react-native react-native-turbomodule

3
推荐指数
1
解决办法
772
查看次数