Electron-packager - “路径”参数必须是字符串类型。接收类型未定义

Posted

技术标签:

【中文标题】Electron-packager - “路径”参数必须是字符串类型。接收类型未定义【英文标题】:Electron-packager - The "path" argument must be of type string. Received type undefined 【发布时间】:2019-05-13 00:30:51 【问题描述】:

我一直在努力解决这个问题,但无法弄清楚。发布了类似的问题,哪些解决方案建议节点版本有故障或包版本应该被降级/升级。我已经尝试过修改节点版本,重新验证 npm 缓存和许多其他小提琴,但没有一个对我有用。 (它发生在运行应用程序-> 电子)

未捕获的异常: TypeError [ERR_INVALID_ARG_TYPE]:“路径”参数必须是字符串类型。接收类型未定义 在 assertPath (path.js:39:11) 在基本名称(path.js:1299:5) 在 Command.parse (/Users/ben.izadi/Documents/Developer/gsa-cloud-portal/ui/electron_app/publishTest2-mas-x64/publishTest2.app/Contents/Resources/app/node_modules/commander/index.js: 462:30) 在 dispatchUploadFileMessageFromArgs (/Users/ben.izadi/Documents/Developer/gsa-cloud-portal/ui/electron_app/publishTest2-mas-x64/publishTest2.app/Contents/Resources/app/index.js:38:4) 在 WebContents.win.webContents.on (/Users/ben.izadi/Documents/Developer/gsa-cloud-portal/ui/electron_app/publishTest2-mas-x64/publishTest2.app/Contents/Resources/app/index.js: 11:5) 在 WebContents.emit (events.js:182:13)

在我的 index.js 中:

const  app, BrowserWindow  = require('electron')
var program = require('commander');
path = require('path');

var win = null;

function createWindow() 
  win = new BrowserWindow( width: 1024, height: 768 )
  win.loadFile('./app/index.html');
  win.webContents.on('did-finish-load', () => 
    dispatchUploadFileMessageFromArgs(process.argv);
  )


const instanceLock = app.requestSingleInstanceLock();
if (!instanceLock) 
  app.quit()
 else 
  app.on('second-instance', (event, argv, workingDirectory) => 
    if (win) 
      if (win.isMinimized()) 
        win.restore();
      
      win.focus();
      dispatchUploadFileMessageFromArgs(argv);
    
  )

  app.on('ready', createWindow);


function dispatchUploadFileMessageFromArgs(argv) 
  program
  .option(
    "-m, --modelfile [modelfile]",
    "Model to analyse in the GSA Cloud Platform"
  )
  .parse(argv);

  if (program.modelfile) 
    var absolutePath = path.resolve(program.modelfile);
    var basename = path.basename(absolutePath);
    win.webContents.send("upload-model-file", basename + "," + absolutePath);
  

包.json:


  "name": "gsa-portal-electron",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": 
    "start": "electron .",
    "start:withfile": "electron . --modelfile ./stairs.gwb",
    "test": "run-script-os",
    "test:win32": "cd node_modules\\mocha\\bin & mocha ..\\..\\..\\tests\\without_upload\\*.spec.js",
    "test:darwin:linux": "./node_modules/mocha/bin/mocha tests/without_upload/*.spec.js",
    "test:ci": "xvfb-maybe ./node_modules/mocha/bin/mocha tests/without_upload/*.spec.js",
    "testupload": "run-script-os",
    "testupload:win32": "cd node_modules\\mocha\\bin & mocha ..\\..\\..\\tests\\upload\\*.spec.js",
    "testupload:darwin:linux": "./node_modules/mocha/bin/mocha tests/upload/*.spec.js",
    "testupload:ci": "xvfb-maybe ./node_modules/mocha/bin/mocha tests/upload/*.spec.js"

  ,
  "author": "",
  "license": "ISC",
  "devDependencies": 
    "chai": "^4.2.0",
    "chai-as-promised": "^7.1.1",
    "electron": "^3.0.10",
    "electron-reload": "^1.3.0",
    "mocha": "^5.2.0",
    "run-script-os": "^1.0.3",
    "spectron": "^5.0.0"
  ,
  "dependencies": 
    "commander": "^2.19.0"
  

【问题讨论】:

能否提供更多细节?在 dev 中打包或运行应用程序时出现此错误? +upvote 我也遇到了这个问题,还没找到解决办法 【参考方案1】:

您需要设置用户键入 --help 时将使用的“名称”

https://github.com/tj/commander.js#usage-and-name

否则,此代码路径将在尝试解析 args https://github.com/tj/commander.js/blob/master/index.js#L446 时失败

我假设这只是 Electron 特定的,在尝试运行捆绑的应用程序时

【讨论】:

以上是关于Electron-packager - “路径”参数必须是字符串类型。接收类型未定义的主要内容,如果未能解决你的问题,请参考以下文章

electron-packager下载太慢怎么办

electron-packager打包报错

为 windows 创建应用安装程序 - Electron (electron-packager, electron-builder)

Electron – 项目报错整理(打包~2): electron-packager踩坑

electron-packager打包spawn EPERM

Win10安装electronjs和打包神器electron-packager