python-shell icon indicating copy to clipboard operation
python-shell copied to clipboard

Uncaught TypeError: (0 , util_1.promisify) is not a function

Open ipeglin opened this issue 2 years ago • 5 comments

Describe the bug

Uncaught TypeError when importing PythonShell in TS linker file for running python script from Electron app. This also happens when using CommonJS with const PythonShell = require('python-shell').

Python code No relevant python code. Error happens at the moment of import

Javascript code import { PythonShell } from 'python-shell'; and const PythonShell = require('python-shell');

Expected behaviour No error. Allowing for creating python instance and running script in new process.

Actual behavior Error message displayed in console.

Uncaught TypeError: (0 , util_1.promisify) is not a function
    at node_modules/python-shell/index.js (index.ts:39)
    at __require (chunk-OL3AADLO.js?v=3f0bc4c7:9)
    at dep:python-shell:1

Other Information (please complete the following information):

  • OS: MacOS Ventura 13.0.1 (22A400) (M1 Macbook Pro)
  • Python Version: Python 3.10.6
  • Node Version: v18.7.0

Additional context Package.json:

{
	"name": "svelte-vite-electron",
	"version": "0.0.0",
	"license": "MIT",
	"scripts": {
		"dev": "cross-env NODE_ENV=development elecrun --vite --preload preload.ts",
		"preview": "npm build && cross-env NODE_ENV=production electron ./app/",
		"build": "elecrun build --preload preload.ts && vite build",
		"clean": "elecrun clean",
		"pack": "npm run build && npm run rebuild && cross-env CSC_IDENTITY_AUTO_DISCOVERY=false electron-builder -c ./electron-builder.yml --win --linux",
		"pack:all": "npm run build && npm run rebuild && cross-env CSC_IDENTITY_AUTO_DISCOVERY=false electron-builder -c ./electron-builder.yml --win --linux --mac",
		"pack:win": "npm run build && npm run rebuild && cross-env CSC_IDENTITY_AUTO_DISCOVERY=false electron-builder -c ./electron-builder.yml --win",
		"pack:mac": "npm run build && npm run rebuild && cross-env CSC_IDENTITY_AUTO_DISCOVERY=false electron-builder -c ./electron-builder.yml --mac",
		"pack:linux": "npm run build && npm run rebuild && cross-env CSC_IDENTITY_AUTO_DISCOVERY=false electron-builder -c ./electron-builder.yml --linux",
		"rebuild": "electron-rebuild -m ./app",
		"postinstall": "electron-builder install-app-deps",
		"prettier": "prettier -w ."
	},
	"devDependencies": {
		"@sveltejs/vite-plugin-svelte": "^1.0.0-next.10",
		"@types/node": "^15.14.9",
		"chalk": "^4.1.0",
		"cross-env": "^7.0.3",
		"electron": "^13.1.1",
		"electron-builder": "^23.6.0",
		"electron-rebuild": "^2.3.5",
		"electron-run": "^2.0.1",
		"esbuild": "^0.12.6",
		"prettier": "^2.3.0",
		"svelte": "^3.38.2",
		"svelte-preprocess": "^4.7.3",
		"ts-node": "^10.0.0",
		"tslib": "^2.2.0",
		"typescript": "^4.3.2",
		"vite": "^3.2.5"
	},
	"dependencies": {
		"fs-extra": "^10.0.0",
		"python-shell": "^3.0.1"
	}
}

ipeglin avatar Dec 28 '22 17:12 ipeglin

Same issue here. I think the solution is this but the lib has to be updated.

const util = require('util');
require('util.promisify').shim(); 

uninstallit avatar Jun 03 '23 15:06 uninstallit

Theoretically you should not have to shim it unless you're using a old version of node I think. What version of node are you using @uninstallit ?

Almenon avatar Jun 03 '23 19:06 Almenon

@Almenon I tried node v16, v18, and v20 . Open to suggestions.

I am using Vite 4.3.9 and using rollup-plugin-node-polyfills/polyfills to resolve node functions

uninstallit avatar Jun 04 '23 06:06 uninstallit

@uninstallit did you find a solution to this? Running into the same issue (node v19)

egdenis avatar Aug 14 '23 12:08 egdenis

That's really wierd, because according to the node docs util.promisify has been part of the official node API ever since v8.

See https://nodejs.org/docs/latest-v20.x/api/util.html#utilpromisifyoriginal

@uninstallit is your electron code open-source, by chance?

Almenon avatar Aug 16 '23 02:08 Almenon