0

I am trying to call a function in a python file from a js file, I got this to work through my console, but I am now trying to implement it in a mobile app using expo.

The way I had set this up is, I have the JS file for a certain screen in my app, this then calls a function in a separate JS file, which then calls the function in the python file.

I am using the child_process module to talk to python from JS.

And as I said, this was working before I tried to export the JS function to my screen file.

index.js



export function foo(process, sentence){

   const spawn = require("child_process").spawn;
   const process = spawn("python3", ["./python.py", sentence]);

   ...
}

screen.js

*other imports

import { foo } from "./filepath..."

...

But when I run npm start I get the following error:

Failed building JavaScript bundle.
While trying to resolve module `child_process` from file `/Users/mee/Documents/GitHub/project/app/screens/screen.js`, the package `/Users/mee/Documents/GitHub/project/node_modules/child_process/package.json` was successfully found. However, this package itself specifies a `main` module field that could not be resolved (`/Users/me/Documents/GitHub/project/node_modules/child_process/app/screens/screen.js`. Indeed, none of these files exist:

How can I fix this?

1 Answers1

0

It won't work for few reasons

  • child_process is part of the node standard library, it's not available in other environments like react-native or browser
  • even if above was not true, there is no python3 executable on your phone
  • python.py file from your local directory wouldn't be even uploaded to the phone because bundler is only uploading one big js file with entire js code combined + assets, python.py is neither of those.

Only solution that make sense it to rewrite that code to javascript.

Technically it's not impossible, there might be a way to do that, by compiling python interpreter for mobile platform, or using some tool that translates python code into js, but it's not something that you should consider.

Wojciech Kozyra
  • 500
  • 3
  • 3
  • Hi, I have thought of an alternative solution, by hosting my python code on a server, and making calls to it, I have posted another question if you could take a look maybe? Thanks https://stackoverflow.com/questions/66597974/host-python-on-server-and-call-from-react-expo-app – Trey Collier Mar 12 '21 at 20:50