質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

解決済

1回答

872閲覧

Node.js python-shell TypeError: child_process_1.spawn is not a function

navca

総合スコア44

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

0クリップ

投稿2019/05/26 00:25

下記のpyhon-shellの読み込みで

App.js内 import {PythonShell} from 'python-shell'; const pyshell = new PythonShell('./python/scrapy.py', {mode : 'json'})
TypeError: child_process_1.spawn is not a function

というエラーがでます。

https://stackoverflow.com/questions/38001720/unable-to-requirechild-process-spawn-console-says-spawn-is-not-a-function
上記URLの通り

python-shell内 const {child_process_1} = require("child_process");

と{}をつけても、同じエラーがでます。しかし、
python-shell内でconst {child_process_1}したときと,{}が無い時を見比べてみると、

{]ある時 const _require = require('child_process'), child_process_1 = _require.child_process_1;
{}ない時 const child_process_1 = require('child_process');

というふうに、変にコンパイルされてしまってるのが原因だと思います。

const {child_process_1} = require("child_process");

の分割代入はわかりますが、コンパイルされるとなぜこのようになってしまうんでしょうか?よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otolab

2019/05/26 05:02

> というふうに、変にコンパイルされてしまってるのが原因だと思います。 の上に結果の欄が抜けているみたいですね。文脈的には上だけ動くとかみたいですが。。
guest

回答1

0

ベストアンサー

「require('child_process')が単純なオブジェクトではない」という可能性はある気がします。

getterによってcomputedな値を返すような機能があると、分割代入と直接アクセスしたときで振る舞いが違う...のかも。

Object.getOwnPropertyNames(require('child_process'))の結果や、Object. getOwnPropertyDescriptor(require('child_process'))でなにか普通とは違う設定が見つかるかもしれません。

投稿2019/05/26 05:04

otolab

総合スコア765

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

navca

2019/05/27 02:38

ご回答ありがとうございます。 ご教示いただいたコードを試したところ、空の配列とundefinedが返ってきました。 パッケージが読み込めていないということを想定しておらず混乱して調べ物をしていたためお返事が遅れ申し訳ありません。 パッケージが読み込まれない場合はパッケージが読み込めないというエラーが出るものと思っておりましたが、 child_processは現在では使用されておらず、 セキュリティ上の理由でSecurity holding packageという空のパッケージで代替されているために そういった挙動になるという風に理解しました。 では、python-shellの代わりに何を使えばいいのか困りましたが。。 有難うございました。
otolab

2019/05/27 03:50

なるほど、そういう挙動になっていたんですね。 謎が解けたようでなによりです。(解決はしてない感じはしますが。。)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問