gpt4 book ai didi

reactjs - React Native,不变违规 : Native module cannot be null.(指向 OneSignal 模块)

转载 作者:行者123 更新时间:2023-12-05 04:05:50 25 4
gpt4 key购买 nike

我正在使用 Jest+Enzyme 为使用 OneSignal 的 React native 应用程序编写测试。

这里有一个类似的问题(我认为):https://github.com/facebook/jest/issues/2208 ,但这个问题已经很老了,我已经按照那里的解决方案进行操作,但没有一个对我有用。

起初,我在运行jest时遇到了这个错误:

home/nrion/Desktop/mobile-ui/PriceInsight_app/node_modules/react-native-onesignal/index.js:4
import { NativeModules, NativeEventEmitter, NetInfo, Platform } from 'react-native';
^^^^^^

SyntaxError: Unexpected token import

> 1 | import OneSignal from 'react-native-onesignal';
2 |
3 | export const STORE_TIMEFRAME = 'STORE_TIMEFRAME';
4 | export const STORE_TIMEFRAMES = 'STORE_TIMEFRAMES';

at ScriptTransformer._transformAndBuildScript (../../../../../usr/lib/node_modules/jest-cli/node_modules/jest-runtime/build/script_transformer.js:316:17)
at Object.<anonymous> (src/actions/subscription.js:1:387)
at Object.<anonymous> (src/reducers/subscription.js:1:402)

所以我继续将 react-native-onesignal 添加到 package.json 中:

"transformIgnorePatterns": [
"node_modules/(?!(react-native-onesignal|react-native-login|react-native-elements)/)"
]

这样就解决了我的问题。但是又来了一个问题:

 Invariant Violation: Native module cannot be null.

> 1 | import OneSignal from 'react-native-onesignal';
2 |
3 | export const STORE_TIMEFRAME = 'STORE_TIMEFRAME';
4 | export const STORE_TIMEFRAMES = 'STORE_TIMEFRAMES';

at invariant (node_modules/fbjs/lib/invariant.js:42:15)
at new NativeEventEmitter (node_modules/react-native/Libraries/EventEmitter/NativeEventEmitter.js:37:31)
at Object.<anonymous> (node_modules/react-native-onesignal/index.js:9:33)

我尝试模拟 OneSignal,但这是我这样做时发生的情况:

 Cannot find module 'OneSignal' from 'Main.test.js'

> 1 | import React from 'react'
2 | import { shallow } from '../../jest-setup'
3 | import configureStore from 'redux-mock-store'
4 | import OneSignal from 'react-native-onesignal'

at Resolver.resolveModule (../../../../../usr/lib/node_modules/jest-cli/node_modules/jest-resolve/build/index.js:169:17)
at Object.<anonymous> (src/__tests__/Main.test.js:1:108)

几个小时以来,我一直对这个问题感到奇怪!任何见解将不胜感激。

最佳答案

事实证明我的模型是错误的。应该是:

jest.mock('react-native-onesignal', () => ({
addEventListener: jest.fn(),
removeEventListener: jest.fn(),
inFocusDisplaying: jest.fn()
}))

正如这个帖子所指出的:https://github.com/facebook/jest/issues/6382#issuecomment-394104956

关于reactjs - React Native,不变违规 : Native module cannot be null.(指向 OneSignal 模块),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50659597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com