在Electron JS应用程序上从npm使用Realm

时间:2018-08-06 06:28:13

标签: realm electron npm-install

我正在尝试使用NPM导入的Realm,但失败。

我正在使用JavaScript的Realm示例:

const Realm = require('realm');

// Define your models and their properties
const CarSchema = {
  name: 'Car',
  properties: {
    make:  'string',
    model: 'string',
    miles: {type: 'int', default: 0},
  }
};
const PersonSchema = {
  name: 'Person',
  properties: {
    name:     'string',
    birthday: 'date',
    cars:     'Car[]',
    picture:  'data?' // optional property
  }
};

Realm.open({schema: [CarSchema, PersonSchema]})
  .then(realm => {
    // Create Realm objects and write to local storage
    realm.write(() => {
      const myCar = realm.create('Car', {
        make: 'Honda',
        model: 'Civic',
        miles: 1000,
      });
      myCar.miles += 20; // Update a property value
    });

    // Query Realm for all cars with a high mileage
    const cars = realm.objects('Car').filtered('miles > 1000');

    // Will return a Results object with our 1 car
    cars.length // => 1

    // Add another car
    realm.write(() => {
      const myCar = realm.create('Car', {
        make: 'Ford',
        model: 'Focus',
        miles: 2000,
      });
    });

    // Query results are updated in realtime
    cars.length // => 2
  })
  .catch(error => {
    console.log(error);
  });

这是它引发的错误:

  

未捕获的错误:找不到模块   '[路径] /node_modules/realm/compiled/electron-v2.0_darwin_x64/realm.node'       在Module._resolveFilename(module.js:543:15)       在Function.Module._resolveFilename([路径] /node_modules/electron/dist/Electron.app/Contents/Resources/electron.asar/common/reset-search-paths.js:35:12)       在Function.Module._load(module.js:473:25)       在Module.require(module.js:586:17)       在要求时(internal / module.js:11:18)       在对象。 ([路径] /node_modules/realm/lib/index.js:102:28)       在对象。 ([路径] /node_modules/realm/lib/index.js:133:3)       在Module._compile(module.js:642:30)       在Object.Module._extensions..js(module.js:653:10)       在Module.load(module.js:561:32)

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

欢迎您!

发生的事情是电子指定了自己的环境,而领域运行时根据当前正在运行的环境加载其二进制文件。

但是,当使用npm安装领域时,我们会在安装时获取与环境相对应的二进制文件,即我们的节点引擎。

因此,在开发模式下运行电子时,领域找不到与电子环境相对应的二进制文件。

通常的解决方法是使用electron-builder软件包并运行其install-app-deps命令,该命令将为电子目标环境安装适当的二进制文件。

在您的package.json文件中使其成为自动脚本是usually recommended

  

要确保您的本机依赖性始终与电子版本匹配,只需添加脚本:

"scripts": {
  "postinstall": "electron-builder install-app-deps"
}

...以便您每次安装新软件包时都可以运行。