Ошибка сценария Electron Packager при использовании Electron Rebuilt - PullRequest
0 голосов
/ 08 февраля 2020

Я работаю с приложением Electron, где я использовал sqlite3. Из-за того, что я использую sqlite3, я перестроил проект с помощью «electronic-rebuild», выполнив следующую команду:

electron-rebuild -f -w sqlite3 

Затем он успешно работает.

После завершения моего проекта мне нужно сделать пакет, используя «Электрон-упаковщик». Вот почему я написал скрипт ('build. js') с помощью inte rnet. Ниже приведен сценарий:

const packager = require('electron-packager');
const rebuild = require('electron-rebuild');

packager({
    buildPath: __dirname,
    electronVersion: '7.1.2',
    dir: '../output',
    overwrite: true,
    asar: true,
    platform: 'win32',
    arch: 'ia32',
    icon: '/src/img/icon.ico',
    prune: true,
    out: 'project-name',
    executableName: 'project-name',
    afterCopy: [(buildPath, electronVersion, platform, arch, callback) => {
        rebuild.rebuild({ buildPath, electronVersion, arch })
            .then(() => callback())
            .catch((error) => callback(error));
    }],
})

После запуска сценария у меня возникла ошибка:


(node:7712) UnhandledPromiseRejectionWarning: Error: Unable to find all properties in parent package.json files. Missing props: ["productName","name"], "version", "author"
    at C:\[[project-location]]\node_modules\get-package-info\lib\index.js:23:17
    at tryCatcher (C:\[[project-location]]\node_modules\bluebird\js\release\util.js:16:23)
    at Promise._settlePromiseFromHandler (C:\[[project-location]]\node_modules\bluebird\js\release\promise.js:547:31)
    at Promise._settlePromise (C:\[[project-location]]\node_modules\bluebird\js\release\promise.js:604:18)
    at Promise._settlePromise0 (C:\[[project-location]]\node_modules\bluebird\js\release\promise.js:649:10)
    at Promise._settlePromises (C:\[[project-location]]\node_modules\bluebird\js\release\promise.js:729:18)
    at _drainQueueStep (C:\[[project-location]]\node_modules\bluebird\js\release\async.js:93:12)
    at _drainQueue (C:\[[project-location]]\node_modules\bluebird\js\release\async.js:86:9)
    at Async._drainQueues (C:\[[project-location]]\node_modules\bluebird\js\release\async.js:102:5)
    at Immediate.Async.drainQueues [as _onImmediate] (C:\[[project-location]]\node_modules\bluebird\js\release\async.js:15:14)
    at processImmediate (internal/timers.js:439:21)
(node:7712) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:7712) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Пакет. json Я использую:

{
  "name": "project-name",
  "version": "1.0.0",
  "description": "",
  "main": "main.js",
  "scripts": {
    "start": "electron .",
    "rebuild": "electron-rebuild -f -w sqlite3 ",
    "package": "node build.js"
  },
  "productName": "project-name",
  "author": "Takiuddin Ahmed",
  "license": "MIT",
  "devDependencies": {
    "electron": "^7.1.2",
    "electron-packager": "^14.2.0",
    "electron-rebuild": "^1.9.0"
  },
  "dependencies": {
    "sqlite3": "^4.1.1"
  }
}

1 Ответ

0 голосов
/ 08 февраля 2020

Я решаю проблему, переписав 'build. js'.

Я получил Документация API электронного упаковщика, и там я обнаружил, что некоторые опции, которые мне нужны, должны быть указаны в моем скрипте сборки. Среди этих параметров win32metadata.companyName, name и buildVersion являются обязательными, но по умолчанию значения должны быть установлены из «package. json». «Win32metadata.companyName» по умолчанию использует имя «автора», «name» - «productName», а «buildVersion» - «version» из пакета. json. Но в любом случае программа не может получить эти параметры из «пакета. json». Поэтому я просто указываю эти опции в 'build. js'. и это работает. Мой последний скрипт 'build. js':


const packager = require('electron-packager');
const rebuild = require('electron-rebuild');

packager({
    name: "project-name",
    buildPath: __dirname,
    electronVersion: '7.1.2',
    version: '1.0.1',
    buildVersion: '1.0.1',
    dir: '../output',
    overwrite: true,
    asar: true,
    platform: 'win32',
    arch: 'ia32',
    icon: '/src/img/icon.ico',
    prune: true,
    appVersion: "1.0.1",
    win32metadata: {
        CompanyName: "Takiuddin Ahmed"
    },
    afterCopy: [(buildPath, electronVersion, platform, arch, callback) => {
        rebuild({ buildPath, electronVersion, arch })
            .then(() => callback())
            .catch((error) => callback(error));
    }],
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...