首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何从Python运行JavaScript?

如何从Python运行JavaScript?
EN

Stack Overflow用户
提问于 2018-09-18 00:29:58
回答 2查看 0关注 0票数 0

我试图从Python运行以下脚本

代码语言:javascript
复制
import execjs
var request = require('request');

var apiHostName='https:/url.com';

emailAddress = 'my.email@company.com'
apiKey = 'api_key'

function callback(error, response, body) {
  if (!error && response.statusCode == 200) {
    console.log("Identity with email address " + emailAddress + " found:");
    var b= JSON.parse(body);
    console.log("id="+b.identityId+",api key="+b.apiKey+",type="+b.type);
  } else{
    if (response.statusCode == 401) {
      console.log ("Couldn't recognize api key="+apiKey);
    } else if (response.statusCode == 403) {
      console.log ("Operation forbidden for api key="+apiKey);
    } else if (response.statusCode == 404) {
      console.log ("Email address " +emailAddress + " not found");
    }
  }
}

这样做了:

代码语言:javascript
复制
pip install py-mini-racer
pip install PyExecJS

基于我所做的研究,我认为这非常接近,但我不确定。我现在得到的就是这个错误:'SyntaxError:invalid syntax'

此行发生错误:'var request = require('request');'

EN

回答 2

Stack Overflow用户

发布于 2018-09-18 09:49:43

这些示例都包含JS代码作为字符串,传递给execjs.evalexecjs.compile,试图直接包含JS代码内联,就好像它是Python代码一样。那不行; 它将尝试将JS代码解析为Python并引发一个SyntaxError因为它们不是同一种语言。1

所以必须做与例子相同的事情,可能看起来像这样:

代码语言:javascript
复制
import execjs

jscode = """
    var request = require('request');

    var apiHostName='https:/url.com';

    emailAddress = 'my.email@company.com'
    apiKey = 'api_key'

    function callback(error, response, body) {
      if (!error && response.statusCode == 200) {
        console.log("Identity with email address " + emailAddress + " found:");
        var b= JSON.parse(body);
        console.log("id="+b.identityId+",api key="+b.apiKey+",type="+b.type);
      } else{
        if (response.statusCode == 401) {
          console.log ("Couldn't recognize api key="+apiKey);
        } else if (response.statusCode == 403) {
          console.log ("Operation forbidden for api key="+apiKey);
        } else if (response.statusCode == 404) {
          console.log ("Email address " +emailAddress + " not found");
        }
      }
    }
"""
execjs.eval(jscode)

将JavaScript移动到单独的.js文件,然后像这样运行:

代码语言:javascript
复制
import os.path
import execjs

dir = os.path.dirname(__file__)
with open(os.path.join(dir, 'myscript.js')) as f:
    jscode = f.read()
execjs.eval(jscode)
票数 0
EN

Stack Overflow用户

发布于 2019-09-20 16:16:02

请问执行js时候,require报错解决了吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100006134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档