我正在尝试使用外部包装:

npm install [python-shell][1]

现在,我只有基本的js文件以及该软件包随附的示例:
console.log('hey in main.js')
var PythonShell = require('python-shell');

PythonShell.run('./my_script.py', function (err) {
  if (err) throw err;
  console.log('finished running python script');
});

连同my_script.py

当我启动服务器时,console.log说:
Uncaught TypeError: spawn is not a function

在python-shell软件包的index.js中,需要正确生成spawn(similar case):
var spawn = require('child_process').spawn;

后来,它像这样在包中使用:
this.childProcess = spawn(pythonPath, this.command, options);

但是,spawn似乎是一个函数:
master$>node
> require('child_process')
{ ChildProcess:
   { [Function: ChildProcess]
     super_:
      { [Function: EventEmitter]
        EventEmitter: [Circular],
        usingDomains: true,
        defaultMaxListeners: 10,
        init: [Function],
        listenerCount: [Function] } },
  fork: [Function],
  _forkChild: [Function],
  exec: [Function],
  execFile: [Function],
  spawn: [Function],
  spawnSync: [Function: spawnSync],
  execFileSync: [Function: execFileSync],
  execSync: [Function: execSync] }

所以我不确定为什么控制台说它不是一个功能。

最佳答案

我在尝试运行这样的代码时遇到了同样的问题

var spawn = require('child_process')
var child = spawn('pwd')

会导致错误
 TypeError: spawn is not a function
at Object.<anonymous> (/home/sailor/advancedNode/child_cluster_exec/spawn.js:5:13)

但是,将spawn添加到require修复了它
 var spawn = require('child_process').spawn
 var child = spawn('pwd')

或者
      var {spawn} = require('child_process')

这工作正常....

关于node.js - 无法要求('child_process').spawn,控制台表示spawn不是函数,Python-Shell Node 包,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38001720/

10-10 15:33