在Python中运行js报错,在js和Python中都打印过相关类型和值了,都没问题,这是怎么回事啊?
报错和异常为:
# 检查响应状态码if response.status_code == 200: try: # 获取响应内容的UTF-8解码字符串 response_text = str(response.content.decode('utf-8')) print(type(response_text)) decrypted_text = execjs.compile(open('./decrypt.js', 'r', encoding='utf-8').read()).call('decrypt', response_text) # 打印解密后的文本 print("Decrypted response:", decrypted_text) except execjs.ProgramError as e: print(f"JavaScript error: {e}") except FileNotFoundError: print("JavaScript file 'decrypt.js' not found.") except UnicodeDecodeError as e: print(f"Encoding error: {e}") except ValueError as e: print(f"Value error: {e}") except Exception as e: print(f"An unexpected error occurred: {e}")else: print(f"Failed to fetch data: {response.status_code}")
// @charset "UTF-8"; const CryptoJs = require('crypto-js'); function decrypt(t) { // return typeof t.replace(/\s+/g, '') // t = t.replace(/\s+/g, '') var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "" , r = 'rewin-swhysc1234' , i = CryptoJs.enc.Utf8.parse(r) , o = CryptoJs.AES.decrypt(t, i, { mode: CryptoJs.mode.ECB, padding: CryptoJs.pad.Pkcs7 }); return CryptoJs.enc.Utf8.stringify(o).toString()}
我首先对参数进行了确认,确认参数为正确格式,且值为正常的。
// return typeof t.replace(/\s+/g, '') // t = t.replace(/\s+/g, '') // 判断t是否为空 // if (t === '' || t === null || t === undefined) { // return 't为空' // }
其次关于编码问题
我在js顶端加了
// @charset "UTF-8";
在Python中用的
# 获取响应内容的UTF-8解码字符串response_text = str(response.content.decode('utf-8'))print(type(response_text))decrypted_text = execjs.compile(open('./decrypt.js', 'r', encoding='utf-8').read()).call('decrypt',response_text)
Python中运行JavaScript代码通常是通过使用第三方库,如execjs
,该库可以允许你编译和运行JavaScript代码。当在Python中运行JavaScript代码时遇到错误,可能有多种原因。
根据你提供的代码和错误截图,有几个潜在的问题点可以检查:
execjs
在背后使用了一个JavaScript运行环境(例如Node.js或V8),确保你的系统中已经安装了相应的运行环境,并且execjs
能够找到它。t
的类型来排除错误,但可能还有其他的JavaScript代码问题。例如,在解密函数中,如果输入的t
不是有效的AES加密字符串,或者密钥r
不正确,或者加密参数(如模式或填充)不匹配,解密过程可能会失败。execjs
在尝试编译或运行JavaScript代码时遇到问题,可能会抛出其他类型的异常。execjs.ProgramError
:这个异常通常表明JavaScript代码在执行时遇到了错误。错误信息应该包含在异常对象中,但截图没有显示完整的错误信息。你需要查看完整的错误消息来确定JavaScript代码中具体哪个部分出错了。为了解决这个问题,你可以尝试以下步骤:
except execjs.ProgramError as e
块中,打印出完整的错误消息e
,这将提供有关JavaScript中发生错误的更多详细信息。execjs
能够找到并正确使用JavaScript运行时。最后,由于你提供的信息有限,特别是错误截图没有显示完整的错误消息,所以这些只是一些可能的解决步骤。解决这个问题的关键在于查看完整的错误消息,并根据错误消息中的具体信息来确定问题的根源。
我在不同的地方对此进行了研究,包括stackoverflow,但我找不到一个对我有帮助的答案。 我使用的是Windows 7,64位,Atom用于64位Windows。我在目录C:\Users\Austin\Documents\Python中安装了Python 3.6.1。当我试图在Atom中运行一个简单的脚本来测试Python时,它说 “python”不被识别为内部或外部命令、可操作程序或批处理
在Node.js的主页上,清楚地写着- Node.js是一个基于Chrome的V8 JavaScript引擎构建的JavaScript运行时。 我试图理解什么是“构建的运行时”。经过一些谷歌搜索,我对此有了一些想法。 请检查我的理解,如果我弄错了,请在任何地方纠正我。如果我把整件事都搞错了,请详细解释。 程序运行时是一个特定的持续时间,程序在其中执行。 我们知道,诺德。js附带预编译的二进制程序,
如果我在windows的命令行上执行我的python脚本,它运行得很好,但是当我在bash上运行它时,它只是一直在等待另一行,但是如果我尝试其他命令,比如,它会显示:
如图,代码来自官方文档的reference,版本也是1.0.0-rc.13
为什么这3行代码一运行网页就会崩溃 完整html
因为问题已经被问了很多次了,但我不能理解清楚。 根据提供的答案,JavaScript运行时意味着执行JavaScript代码的地方。 现在Nodejs的定义,它是一个异步的javascript运行时,这是否意味着在Nodejs内部执行javascript? 另外,javascript runtime environment,是指执行javascript代码的环境或机器设置吗? 对不起,我重复了我的