尝试创建我的第一个 npm 模块以确定用户是否正在打电话。它适用于 React Native 应用程序。无论我尝试什么,模块都会返回未定义。NativeModules 始终显示为空对象。
请帮忙!下面是代码的链接。export default RNOnPhoneCall;inindex.js只会返回未定义。如何链接ios文件夹中的函数并将其导出到 中index.js?注意,android还不是最新的,只是ios。
关于这个问题,我一直在尝试通过Android中的本机模块来完成。
我已经.../java/com/myproject/multiplecamerastream按照React Native ToastModule的示例声明了我的模块(此处的功能并不重要):
public class MultipleCameraStreamModule extends ReactContextBaseJavaModule {
private static final String CAMERA_FRONT = "SHORT";
private static final String CAMERA_BACK = "LONG";
public MultipleCameraStreamModule(ReactApplicationContext reactContext) {
super(reactContext);
}
@Override
public String getName() {
return "MultipleCameraStream";
}
@Override
public Map<String, Object> getConstants() {
final Map<String, Object> constants = new HashMap<>();
constants.put(CAMERA_FRONT, Toast.LENGTH_SHORT);
constants.put(CAMERA_BACK, Toast.LENGTH_LONG);
return constants;
}
@ReactMethod
public void show(String message, int duration) {
Toast.makeText(getReactApplicationContext(), message, duration).show();
}
}
Run Code Online (Sandbox Code Playgroud)
然后,我的模块包装器:
public class …Run Code Online (Sandbox Code Playgroud) java android react-native native-module react-native-native-module
在https://facebook.github.io/react-native/docs/native-modules-ios.html中的教程中定义本机模块时遇到问题。
#import "CalendarManager.h"
#import <React/RCTLog.h>
@implementation CalendarManager
RCT_EXPORT_MODULE();
RCT_EXPORT_METHOD(addEvent: (NSString *)name location: (NSString *)location)
{
}
@end
Run Code Online (Sandbox Code Playgroud)
它给我RCT_EXPORT_METHOD中的编译错误
“预期的')'”
。和
“缺少类型说明符,默认为int”(后来也出现在RCT_EXPORT_MODULE下)
C++ 本机模块的 std::cout 控制台消息不会在模块构建后打印在控制台上。
有什么方法可以在控制台上打印运行时 std::cout 消息,然后我们可以使用 node.js 在电子应用程序中捕获这些消息
node.js 如何运行本机模块,它是在与沙盒程序相同的线程上运行还是在不同的线程上运行?
我写这是为了回答我自己的问题,因为文档没有明确说明这一点,并且在堆栈溢出或其他任何地方都找不到它。这是将String数组从Java模块返回到React Native Component的方法(从我的个人项目中的代码简化)。
CPPConnection.java文件
public class CPPConnection extends ReactContextBaseJavaModule {
@ReactMethod
public void GetDerivedUnits(String scheme,final Promise promise){
try {
List<String> returnSet = new ArrayList<String>();
//Set first value so that there is a lead value
returnSet.add("");
returnSet.add(scheme);
returnSet.add("lb");
returnSet.add("kg");
String[] returnArray = new String[returnSet.size()];
returnArray = returnSet.toArray(returnArray);
WritableArray promiseArray=Arguments.createArray();
for(int i=0;i<returnArray.length;i++){
promiseArray.pushString(returnArray[i]);
}
promise.resolve(promiseArray);
}
catch(Exception e){
promise.reject(e);
}
}
}
Run Code Online (Sandbox Code Playgroud)
Density.js文件
export default class Density extends Component{
...
constructor(props) {
super(props);
this.state = {
mass: '',
massUnits:[],
volume: '',
volumeUnits:[], …Run Code Online (Sandbox Code Playgroud) 我正在使用该包react-native-localize在应用程序中提供本地化。我已经链接了该库,它可以在设备上正常运行。
问题:
当我测试导入react-native-localize的组件时。我收到错误react-native-localize: NativeModule.RNLocalize is null。为了解决这个空错误,我jest.mock('react-native-localize');在测试文件的顶部调用。但我仍然收到指向NativeModule.RNLocalize is null. 我还提供了README 包中提到的模拟,但无济于事。
import 'react-native';
import React from 'react';
import App from '../App';
// Note: test renderer must be required after react-native.
import renderer from 'react-test-renderer';
import * as RNLocalize from 'react-native-localize';
// mocking the module here with jest.mock
jest.mock('react-native-localize');
it('renders correctly', () => {
renderer.create(<App />);
});
Run Code Online (Sandbox Code Playgroud)
题:
如何解决测试中的 NativeModule.RNLocalize is null 错误?
测试堆栈跟踪:
FAIL __tests__/App-test.js
? Test suite failed …Run Code Online (Sandbox Code Playgroud) 我有一些服务需要通过用户输入或给定默认值重复启动,所以我需要添加参数来处理它,
我已经尝试过这个:
@ReactMethod
public void start(){
start(1000);
}
@ReactMethod
public void start(int timer){
Intent i = new Intent(reactContext, ServiceUploadData.class);
i.putExtra("Interval", timer);
reactContext.startService(i);
}
Run Code Online (Sandbox Code Playgroud)
但这些代码显示错误
开始有 0 个参数,预期有 1 个
有人可以帮助我吗?
我正在使用electronand创建一个应用程序nodejs,当我尝试electron-builder使用以下命令构建它时:
electron-builder --mac --linux --win --x64
Run Code Online (Sandbox Code Playgroud)
它仅为我当前的操作系统构建本机模块。有没有办法为所有操作系统构建本机模块?