You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular中python-shell首行报错:ReferenceError: require未定义

解决 ReferenceError: require is not defined 问题

这个报错的核心原因很直白:require() 是Node.js专属的CommonJS模块加载语法,浏览器环境根本不认识它,而且 python-shell 本身就是为Node.js后端设计的库,完全不能直接在前端网页里调用。

你想要实现“点击前端按钮运行Python脚本”,不能把后端逻辑硬塞到前端里,得把整个流程拆成前后端两部分:前端负责触发请求,后端(Node.js服务)负责执行Python脚本。下面是具体的实现步骤:

步骤1:搭建Node.js后端服务

首先确保你已经安装了Node.js,然后按以下操作来:

  1. 初始化项目(如果还没做):

    npm init -y
    
  2. 安装必要的依赖:

    npm install express python-shell cors
    

    (cors 是用来解决跨域问题的,如果你的前端和后端运行在不同端口的话必须用它)

  3. 创建后端服务文件 server.js,代码示例:

    const express = require('express');
    const { PythonShell } = require('python-shell');
    const cors = require('cors');
    
    const app = express();
    app.use(cors());
    app.use(express.json());
    
    // 定义接口,处理前端的运行脚本请求
    app.post('/run-python-script', (req, res) => {
      // 配置Python脚本的路径和参数
      const options = {
        scriptPath: './', // 替换成你的Python脚本实际所在路径
        // 如果需要给脚本传参数,可添加 args: ['参数1', '参数2']
      };
    
      PythonShell.run('your-script.py', options, (err, results) => {
        if (err) {
          return res.status(500).json({ error: err.message });
        }
        // 将脚本执行结果返回给前端
        res.json({ output: results });
      });
    });
    
    // 启动服务,监听3000端口
    app.listen(3000, () => {
      console.log('后端服务运行在 http://localhost:3000');
    });
    

步骤2:修改前端代码

把原来直接调用require('python-shell')的代码,改成向后端接口发送请求,示例:

<button id="runScriptBtn">运行Python脚本</button>

<script>
document.getElementById('runScriptBtn').addEventListener('click', async () => {
  try {
    const response = await fetch('http://localhost:3000/run-python-script', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      // 如果需要给后端传数据,可添加 body: JSON.stringify({ data: '你的数据' })
    });
    const result = await response.json();
    console.log('脚本执行结果:', result.output);
    // 这里可以把结果展示在页面上,比如更新某个DOM元素
  } catch (error) {
    console.error('请求出错:', error);
  }
});
</script>

步骤3:运行服务并测试

  1. 启动后端服务:
    node server.js
    
  2. 打开你的前端网页,点击按钮,就能触发后端执行Python脚本了。

额外注意事项

  • 确保你的电脑已经安装了Python,并且Python命令能在系统终端直接调用(Node.js需要找到Python的执行路径)
  • 如果你的Python脚本依赖第三方包,要先提前安装好这些依赖
  • 调整server.js里的scriptPath和脚本文件名,匹配你实际的Python脚本位置
  • 如果前端和后端端口不同,一定要保留cors中间件,否则会出现跨域报错

内容的提问来源于stack exchange,提问作者Rorschach

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:08:13