首页 > 解决方案 > 从 react-native-static-server 启动 StaticServer 时出错:未定义不是对象(评估“this.staticServer.start”)

问题描述

我将我的应用程序从 Expo 中分离出来,我安装并链接了 react-native-static-server 模块。我在 App.js 文件中添加了这段代码,就在组件定义之前,看看它是如何工作的:

import StaticServer from 'react-native-static-server';
const server = new StaticServer( 8080, { localOnly: false, keepAlive : true } );

server.start( ).then( ( url ) => {
    console.log( "Serving at URL", url );
} );

现在,当我调用 start() 方法时出现此错误:

TypeError: undefined is not an object (evaluating 'this.staticServer.start')

应用程序不断崩溃并重新启动。到目前为止,我只在 Android 上测试过它。有人知道我做错了什么吗?我在 github 上没有看到任何关于此的问题。

我的应用程序的 Android Studio 中的 Logcat 显示以下内容:

D/ReactNative: ReactInstanceManager.createReactContextInBackground()
D/ReactNative: ReactInstanceManager.recreateReactContextInBackgroundInner()
W/unknown:ReactNative: Tried to enqueue runnable on already finished thread: 'native_modules... dropping Runnable.
W/MessageQueue: Handler (com.facebook.react.bridge.queue.MessageQueueThreadHandler) {14699d1} sending message to a Handler on a dead thread
    java.lang.IllegalStateException: Handler (com.facebook.react.bridge.queue.MessageQueueThreadHandler) {14699d1} sending message to a Handler on a dead thread
        at android.os.MessageQueue.enqueueMessage(MessageQueue.java:545)
        at android.os.Handler.enqueueMessage(Handler.java:662)
        at android.os.Handler.sendMessageAtTime(Handler.java:631)
        at android.os.Handler.sendMessageDelayed(Handler.java:601)
        at android.os.Handler.post(Handler.java:357)
        at com.facebook.react.bridge.queue.MessageQueueThreadImpl.runOnQueue(MessageQueueThreadImpl.java:61)
        at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)
        at android.os.Handler.handleCallback(Handler.java:790)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:31)
        at android.os.Looper.loop(Looper.java:164)
        at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(MessageQueueThreadImpl.java:194)
        at java.lang.Thread.run(Thread.java:764)

标签: androidreact-nativeexpo

解决方案


我查看了 react-native-static-server 存储库,发现它在过去两个月内没有更新。我认为它可能适用于两个月大的 react-native 版本。

我将 expo sdk 降级为 25,它基于 react-native@0.52。现在一切正常。


推荐阅读