Ошибка области - _constructor должен иметь тип 'function', полученный (undefined) - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь настроить Realm DB локально с моим собственным приложением реагировать, но, кажется, есть ошибка, которую я не могу выяснить причину.Я следовал документации и руководству здесь .

Мой код.

import Realm from 'realm';

export const ConfigSchema = {
    name: 'Config',
    primaryKey: 'key',
    properties: {
        key: 'string',
        value: 'string'
    }
};

export const databaseOptions = {
    path: 'myappreactnative.realm',
    schema: [ConfigSchema],
    schemaVersion: 0
};

export const insertNewConfig = (newConfig) => new Promise((resolve, reject) => {
    Realm.open(databaseOptions).then(realm => {
        // realm.create('Config', newConfig);
        // resolve(newConfig);
        console.log(realm);
    }).catch((error) => reject(error))
});

Я звоню insertNewConfig отсюда,

let config = {
    key: 'instanceUrl',
    value: 'myurl.domain.value'
};

insertNewConfig(config).then((result) => {
    console.log(result);
}).catch((error) => {
    console.log(error);
});

this.props.navigation.navigate('Login', {});

Ошибка в строке Realm.open(databaseOptions).Сначала я подумал, что ошибка была с realm.create, но позже понял исходную строку.

Отображение ошибки выглядит следующим образом.

Error: _constructor must be of type 'function', got (undefined)
    at sendRequest (rpc.js:263)
    at Object.createRealm (rpc.js:62)
    at new Realm (index.js:102)
    at Function.open (extensions.js:110)
    at eval (eval at <anonymous> (MetroClient.js:63), <anonymous>:29:22)
    at tryCallTwo (core.js:45)
    at doResolve (core.js:200)
    at new Promise (core.js:66)
    at insertNewConfig (eval at <anonymous> (MetroClient.js:63), <anonymous>:28:12)
    at Object.SelectInstanceScreen._this.continueLogin [as onPress] (eval at <anonymous> (MetroClient.js:63), <anonymous>:74:37)

Кажется, что функция open() должна вызываться какфункция (_constructor должен иметь тип 'function'), но очевидно, что open() вызывается как функция.Заранее спасибо.

Ответы [ 4 ]

0 голосов
/ 18 ноября 2018

Есть несколько проблем, связанных с обновлением и областью Node.Realm не работает с Node 10, и для вашей проблемы снижение до 2.16 решит проблему.

0 голосов
/ 13 октября 2018

Это связано с последней версией царства (v2.18.0).Вам следует понизиться до 2.16.0.

После этого вы можете запустить этот код для сброса всех пакетов;

watchman watch-del-all && rm -rf $TMPDIR/react-native-packager-cache-* && rm -rf $TMPDIR/metro-bundler-cache-* && rm -rf node_modules/ && yarn cache clean && yarn install && yarn start -- --reset-cache
0 голосов
/ 16 ноября 2018

Я изменил package.json изменил

с "realm": "ˆ2.16.0",

на "realm": "2.16.0",

И затем выполните npm install или yarn

Решил это для меня.

0 голосов
/ 11 октября 2018

Я думаю, возможно, это ошибка в последнем выпуске (2.18.0), попробуйте понизить до 2.16.0, это будет работать.

...