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

通过JsPyBridge使用PostCSS+TailwindCSS报错:TypeError问题求助

解决JsPyBridge调用postcss.then()时的TypeError问题

问题分析

你的Node.js代码能正常运行,但Python调用then()时报错TypeError: 'NoneType' object is not callable,核心原因是JsPyBridge对JS Promise的then()方法处理逻辑和原生JS不同,Python的lambda函数无法直接作为JS Promise的回调被正确识别,同时JS与Python的异步处理逻辑差异也可能引发该问题。

解决方案

方案1:使用JsPyBridge异步语法(推荐)

JsPyBridge支持Python的async/await语法处理JS Promise,替代then()回调的方式:

from javascript import require, asyncio

tailwind = require("tailwindcss")
postcss = require("postcss")

async def process_css():
    result = await postcss([tailwind({"content": [DIR + "../app/**/*.*"]})]).process(
        _input_css, {"from": None}
    )
    print(result.css)

asyncio.run(process_css())

方案2:用原生JS函数作为回调

如果坚持使用then(),可以通过JSFunction创建原生JS回调函数,规避Python lambda的兼容性问题:

from javascript import require, JSFunction

tailwind = require("tailwindcss")
postcss = require("postcss")

# 创建原生JS回调
js_callback = JSFunction("css", "console.log(css.css);")

postcss([tailwind({"content": [DIR + "../app/**/*.*"]})]).process(
    _input_css, {"from": None}
).then(js_callback)

额外检查项

  • 确认DIR变量的路径拼接结果和Node.js中path.join(__dirname, "../app/**/*.*")一致,避免路径错误导致postcss处理异常
  • 确保JsPyBridge为最新版本,旧版本可能存在Promise处理的兼容性bug

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 18:46:07