使用 PyExecJS2 库时 js 引用包的模块路径问题

目录结构

/project-root
│
├── main.py
└── js
    ├── sha1.js
    └── index.js

main.py

import os
import execjs

# 将js文件夹路径设置到 NODE_PATH 环境变量即不会引发require导入时找不到包的问题
current_dir_path = os.path.dirname(os.path.abspath(__file__))
js_module_dir = f'{current_dir_path}/js'
os.environ['NODE_PATH'] = js_module_dir

with open('./js/index.js') as f:
  js_str = f.read()
  js_ctx = execjs.compile(js_str)
  
  js_ctx.call(add, 1, 2)

index.js

const CryptoJS = require('./sha1.js')

function add (a, b) {
	return a + b
}
posted @ 2024-09-14 12:31  灵火  阅读(32)  评论(0编辑  收藏  举报