我正在尝试使用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)
非常感谢您的帮助。
答案 0 :(得分:0)
欢迎您!
发生的事情是电子指定了自己的环境,而领域运行时根据当前正在运行的环境加载其二进制文件。
但是,当使用npm安装领域时,我们会在安装时获取与环境相对应的二进制文件,即我们的节点引擎。
因此,在开发模式下运行电子时,领域找不到与电子环境相对应的二进制文件。
通常的解决方法是使用electron-builder软件包并运行其install-app-deps
命令,该命令将为电子目标环境安装适当的二进制文件。
在您的package.json
文件中使其成为自动脚本是usually recommended:
要确保您的本机依赖性始终与电子版本匹配,只需添加脚本:
"scripts": {
"postinstall": "electron-builder install-app-deps"
}
...以便您每次安装新软件包时都可以运行。