如何在 ReactJS 应用程序的服务器端导入模块“child_process”
Posted
技术标签:
【中文标题】如何在 ReactJS 应用程序的服务器端导入模块“child_process”【英文标题】:how to import module 'child_process' on server side of a ReactJS app 【发布时间】:2018-09-17 15:55:34 【问题描述】:如何在 ReactJS 应用程序中使用像“child_process”这样的模块? (react@16.3.1 / Linux)
这些语法失败:
import spawn from 'child_process'
const ls = spawn('ls', ['-al']);
产量:TypeError: Object(...) is not a function
import cp from 'child_process';
const ls = cp.spawn('ls', ['-al']);
产量:TypeError: __WEBPACK_IMPORTED_MODULE_3_child_process___default.a.spawn is not a function
var spawn = require('child_process');
const ls = spawn('ls', ['-al']);
产量:TypeError: spawn is not a function
【问题讨论】:
你的用例到底是什么? 抱歉,我的问题表述不当:我的应用实际上有服务器端代码(发生异常的地方),但错误与 React 无关。我终于找到了导入模块 child_process.there 的方法。感谢您的帮助! 【参考方案1】:您不能在反应应用程序中使用节点的模块child_process
。
您无法访问操作系统系统进程以从浏览器生成和派生,因为它是一个孤立的环境。
【讨论】:
不过,React 应用程序的一部分正在服务器端运行:是否可以在服务器端生成子进程? 即使你在服务器上使用 s-s-r,你也不能,而且我没有看到任何你想使用 react 来生成子进程的用例。使用 node.js 生成进程,进行计算并将它们发送给 react(这是一个库,用于显示从服务器接收到的数据到 DOM)。 React 只能提供浏览器支持的功能。 (出于安全原因,浏览器不允许访问客户端操作系统和生成进程)。【参考方案2】:ReactJS 仅在您的应用程序的客户端工作并与 DOM 交互。子进程在您的应用程序的服务器端触发。
所以这两件事是分开的。
ReactJS 可以向服务器发起一个 http 调用,然后触发子进程。服务器可以将子进程的结果发送回 React 客户端。
【讨论】:
以上是关于如何在 ReactJS 应用程序的服务器端导入模块“child_process”的主要内容,如果未能解决你的问题,请参考以下文章