Python调用ESLint检查临时.js文件时遭遇忽略问题
问题:临时文件路径导致ESLint忽略检查?
我需要对生成的.js内容做ESLint基础合理性检查,用Python的subprocess模块调用ESLint,并用tempfile创建临时.js文件执行检查。但即使添加了--no-ignore参数,ESLint仍提示该临时文件被忽略,断言验证失败。将文件写入当前目录时,ESLint可正常工作,推测是tempfile生成的路径导致被忽略。
代码示例
import subprocess import tempfile import os # 创建临时文件、执行ESLint验证并清理 def run_eslint_validation(content): with tempfile.NamedTemporaryFile(delete=False, suffix=".js", mode='w') as tmp: tmp.write(content) js_file_path = tmp.name cmd = [ 'eslint', '--no-config-lookup', '--no-ignore', '--rule', 'semi: [error, always]', # 强制要求分号 js_file_path ] # 执行验证 try: result = subprocess.run(cmd, capture_output=True, text=True) print("CMD:", cmd) print("STDOUT:", result.stdout) return result.returncode == 0 finally: # 删除临时文件 os.remove(js_file_path) assert(run_eslint_validation("const x = 10")) == False, "ESLint验证失败"
报错信息
CMD: ['eslint', '--no-config-lookup', '--no-ignore', '--rule', 'semi: [error, always]', '/var/folders/x7/n7rzl1zx5s96ft2p13c7bb_r0000gn/T/tmpng06us9y.js'] STDOUT: /var/folders/x7/n7rzl1zx5s96ft2p13c7bb_r0000gn/T/tmpng06us9y.js 0:0 warning File ignored because of a matching ignore pattern. Use "--no-ignore" to disable file ignore settings or use "--no-warn-ignored" to suppress this warning ✖ 1 problem (0 errors, 1 warning) Traceback (most recent call last): File "/private/tmp/lint/2test.py", line 29, in <module> assert(run_eslint_validation("const x = 10")) == False, "ESLint validation failed" AssertionError: ESLint验证失败
可行方案(写入当前目录)
将文件写入当前目录时,ESLint可正常工作,代码如下:
js_file_name = f"{uuid.uuid4()}.js" js_file_path = os.path.join('.', js_file_name) # 将JavaScript内容写入文件 with open(js_file_path, 'w') as js_file: js_file.write(content)
内容的提问来源于stack exchange,提问作者RaGe
相关产品推荐
相关产品推荐

