【问题标题】:how to import module 'child_process' on server side of a ReactJS app如何在 ReactJS 应用程序的服务器端导入模块“child_process”
【发布时间】: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 的方法。感谢您的帮助!

标签: javascript reactjs import require child-process


【解决方案1】:

您不能在反应应用程序中使用节点的模块child_process

您无法访问操作系统系统进程以从浏览器生成和派生,因为它是一个孤立的环境。

【讨论】:

  • 不过,React 应用程序的一部分正在服务器端运行:是否可以在服务器端生成子进程?
  • 即使你在服务器上使用 SSR,你也不能,而且我没有看到任何你想使用 react 来生成子进程的用例。使用 node.js 生成进程,进行计算并将它们发送给 react(这是一个库,用于显示从服务器接收到的数据到 DOM)。 React 只能提供浏览器支持的功能。 (出于安全原因,浏览器不允许访问客户端操作系统和生成进程)。
【解决方案2】:

ReactJS 仅在您的应用程序的客户端工作并与 DOM 交互。子进程在您的应用程序的服务器端触发。

所以这两件事是分开的。

ReactJS 可以向服务器发起一个 http 调用,然后触发子进程。服务器可以将子进程的结果发送回 React 客户端。

【讨论】:

    猜你喜欢
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    • 2021-04-06
    • 2015-10-22
    • 2018-01-29
    • 2018-04-12
    • 2018-06-07
    相关资源
    最近更新 更多