#javascript #node.js #reactjs #forms
Вопрос:
Я использую следующий фрагмент кода, чтобы получить значение из скрипта python. Он отлично работает, когда я запускаю его как таковой в отдельном файле:
var spawn = require('child_process').spawn;
const process = spawn('python', ['src/components/BTC_NT.py']);
process.stdout.on('data', data => {
test = data.toString();
});
process.stderr.on('data', (data) => {
console.log('err results: %j', data.toString('utf8'))
});
process.stdout.on('end', function(){
console.log(test);
});
Но когда я запускаю его в своем приложении React, как это:
import React from "react";
import { useState } from "react";
const Main = () => {
const [Text, setText] = useState('');
const [showPrice, setShowPrice] = useState('');
const getVal = (e) => {
e.preventDefault();
var spawn = require('child_process').spawn;
const process = spawn('python', ['src/components/BTC_NT.py']);
process.stdout.on('data', data => {
test = data.toString();
});
process.stderr.on('data', (data) => {
console.log('err results: %j', data.toString('utf8'))
});
process.stdout.on('end', function(){
console.log(test);
setShowPrice(test);
});
}
return(
<div className="Main">
<p>
The following cryptocurrencies are available: Bitcoin(BTC), Ethereum(ETH).
</p>
<form onSubmit={getVal}>
<label htmlFor="CurrencyName">Currency Name: </label>
<input type="text" className="CurrencyName" value={Text} onChange={(e) => setText(e.target.value)} />
<button style={{marginLeft:"5px"}} type="submit">Submit</button>
</form>
{showPrice !== '' amp;amp; showPrice}
</div>
)
}
export default Main;
Я получаю ошибку — «Ошибка типа: порождение не является функцией».
Любая помощь в этом будет признательна.
Комментарии:
1. Специфичные для узла JS не могут использоваться в браузерах.
Ответ №1:
Когда вы запускаете файл локально, вы, по-видимому, используете какую-то другую среду выполнения (вероятно node.js), когда вы запускаете файл в react, вы запускаете его в браузере, где отсутствуют такие вещи, как child_process