Javascript 调用AppRegistry.registerComponent失败

Javascript 调用AppRegistry.registerComponent失败,javascript,reactjs,react-native,Javascript,Reactjs,React Native,我使用react native init Wevaha创建了一个新项目,然后 执行它的工作正常,然后我修改了基于我的示例应用程序 再次运行需求时,它工作正常,但下次运行时 运行应用程序时,我得到的错误如下 ' Application Wevaha has not been registered.This is either due to a require() error during intialization or failure to call AppRegistry.registerC

我使用
react native init Wevaha
创建了一个新项目,然后 执行它的工作正常,然后我修改了基于我的示例应用程序 再次运行需求时,它工作正常,但下次运行时 运行应用程序时,我得到的错误如下

' Application Wevaha has not been registered.This is either due to a require() error during intialization or failure to call
AppRegistry.registerComponent'

下面附上的屏幕截图请查找


很可能您已经有另一个React本机packager服务器为另一个应用程序运行,或者AppDelegate.m中的应用程序名称与index.js中的应用程序名称不同


尝试关闭所有终端窗口,仔细检查
moduleName
的值,然后再次运行项目

为了详细说明奥巴多说的话,在关闭所有终端窗口/杀死所有其他本地进程之后,我仍然存在这个问题。发生在我身上的是
AppDelegate.m
(在XCode项目的根目录中)中的
moduleName
的值不正确。我使用的是从中生成的,并试图将其从“雪花”重命名为我自己的,但我忽略了该值,因此出现了该错误。

杀死所有其他节点进程对我有效 即

找到这些过程和方法

pkill -f node

在我的例子中,要终止进程,这是由
index.ios.js
中的应用程序名称区分大小写引起的

它在我从

AppRegistry.registerComponent('AppleReactNative', () => App)


对我们来说,问题在于注册的应用程序的名称与根文件夹不匹配。因此,如果您的根文件夹是
/ChatApp
,请将您的应用注册为:

AppRegistry.registerComponent('ChatApp', ()  => App);

对于我的例子,我看一看它正在侦听的packager端口号。 这是在根项目目录中调用
npm start
的结果

┌────────────────────────────────────────────────────────────────────────────┐ │ Running packager on port 8081. │ │ │ │ Keep this packager running while developing on any JS projects. Feel │ │ free to close this tab and run your own packager instance if you │ │ prefer. │ │ │ │ https://github.com/facebook/react-native │ │ │ └────────────────────────────────────────────────────────────────────────────┘ 现在取那个
PID
number,通过

kill-98131

通过npm start--reset cache重置缓存,再次运行打包机,现在应该可以了

供参考


react:
15.4.2
,react native:
0.41.2
如果在android设备或android emulator上运行时遇到此问题

除了index.js,您还应该确保应用程序名称在下面的文件
index.android.bundle
中相同:

您可以在以下路径找到:
~android/app/src/main/assets/index.android.bundle

搜索旧的应用程序名称并将其替换为实际名称


它对我有用,希望它也能帮助其他人。

只需从((appName,()=>App))中删除小括号即可


确保在
package.json
中注册的应用程序的名称与根文件夹的名称匹配。 在我的react原生应用程序中,它如下所示。确保将名称作为appName(camelCase)从./app.json导入,如下所示:

import React from 'react'
import {AppRegistry} from 'react-native';
import App from './app/index';
import {name as appName} from './app.json';

import { Provider } from 'react-redux'
import { createStore, applyMiddleware, compose } from 'redux'
import promiseMiddleware from 'redux-promise'
import reducers from './app/store/reducers'

const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
const createStoreWithMiddleware = createStore(
    reducers,
    composeEnhancers(applyMiddleware(promiseMiddleware))
)
const appRedux = () => {
    return(
        <Provider store={createStoreWithMiddleware}>
            <App />
        </Provider>
    )
    
}

AppRegistry.registerComponent(appName, () => appRedux);
从“React”导入React
从“react native”导入{AppRegistry};
从“./App/index”导入应用程序;
从“./app.json”导入{name as appName};
从“react redux”导入{Provider}
从“redux”导入{createStore,applyMiddleware,compose}
从“redux promise”导入promiseMiddleware
从“./app/store/reducers”导入还原程序
const composeinhancers=window.uuu REDUX_DEVTOOLS_EXTENSION_u124;COMPOSE|COMPOSE;
const createStoreWithMiddleware=createStore(
减速器,
composeEnhancers(applyMiddleware(promiseMiddleware))
)
常量程序=()=>{
返回(
)
}
AppRegistry.registerComponent(appName,()=>appRedux);
我刚刚运行:

npx反应本机重命名-b

而且它不会覆盖
ReactNativeFlipper.java

所以我不得不从

android\app\src\debug\java\com\oldprojname\ReactNativeFlipper.java

android\app\src\debug\java\com\newprojname\ReactNativeFlipper.java

并确保在app.json内进行更改

{ “名称”:“newprojname”, “显示名称”:“新名称” }


你能给我们看一下你的
index.ios.js
index.android.js
文件吗?@medttleukiliuly在这种情况下是错误的。如果在
AppDelegate.m
中手动更新
moduleName
,则错误很可能出现在index.ios.js文件或index.android.js文件中。这是否解决了问题?手动更新是什么意思?我将该值设置为我想要的值,并修复了app.js文件中的problem.app name与app delegate中的name匹配的问题,但我仍然存在此问题。有什么想法吗?不适合我,关闭packager服务器,检查moduleName。argh.如何修复expo app的此问题?com.facebook.react.common.JavascriptException:undefined不是一个对象(评估'U.startApp'),堆栈我收到此类型错误请帮助我您有任何想法。我在index.android.bundlei中发现'U.startApp',如果在MacOS上运行新的React Native for MacOS,这需要在app.json中更改 ┌────────────────────────────────────────────────────────────────────────────┐ │ Running packager on port 8081. │ │ │ │ Keep this packager running while developing on any JS projects. Feel │ │ free to close this tab and run your own packager instance if you │ │ prefer. │ │ │ │ https://github.com/facebook/react-native │ │ │ └────────────────────────────────────────────────────────────────────────────┘ COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME AwesomePr 8131 haxpor 9u IPv6 0x372bdab8e928e839 0t0 TCP localhost:56484->localhost:sunproxyadmin (SYN_SENT)
 AppRegistry.registerComponent(appName, ()  => App);
import React from 'react'
import {AppRegistry} from 'react-native';
import App from './app/index';
import {name as appName} from './app.json';

import { Provider } from 'react-redux'
import { createStore, applyMiddleware, compose } from 'redux'
import promiseMiddleware from 'redux-promise'
import reducers from './app/store/reducers'

const composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;
const createStoreWithMiddleware = createStore(
    reducers,
    composeEnhancers(applyMiddleware(promiseMiddleware))
)
const appRedux = () => {
    return(
        <Provider store={createStoreWithMiddleware}>
            <App />
        </Provider>
    )
    
}

AppRegistry.registerComponent(appName, () => appRedux);
and changed inside `ReactNativeFlipper.java`

-com.oldproname

+com.newprojname