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

JavaScript/TypeScript中Python fn.__module__的等效实现方法

JavaScript/TypeScript中获取函数所属模块的方法

在Python中可以通过fn.__module__直接获取函数所属的模块,但JavaScript/TypeScript并没有原生提供类似的内置属性,不过可以通过以下几种方式实现等效效果:

1. ES模块(ESM)中自定义模块属性

在ES模块环境下,可以利用import.meta.url获取当前模块的URL,手动为函数附加模块标识:

mymodule.js

export function foo() {}
// 为函数添加模块信息属性
foo.module = import.meta.url;

main.js

import { foo } from './mymodule.js';
console.log(foo.module); // 输出模块的完整URL,例如 file:///user/project/mymodule.js

TypeScript中的写法完全一致,只需将文件后缀改为.ts即可。

2. CommonJS模块中利用module对象

在Node.js的CommonJS环境中,可以直接使用module.filename获取模块的绝对路径,同样手动附加给函数:

mymodule.cjs

function foo() {}
foo.module = module.filename;
module.exports = { foo };

main.cjs

const { foo } = require('./mymodule.cjs');
console.log(foo.module); // 输出模块的绝对路径,例如 /user/project/mymodule.cjs

3. TypeScript装饰器统一处理

如果使用TypeScript,可以通过装饰器自动为函数添加模块信息,避免手动重复操作:

// 定义装饰器
function AttachModuleInfo(target: any, propertyKey: string) {
  target[propertyKey].module = import.meta.url;
}

export class MyModule {
  @AttachModuleInfo
  static foo() {}
}

导入后访问MyModule.foo.module即可获取该函数所属模块的URL。

需要注意的是,以上所有方案都是通过自定义属性实现,因为JS/TS语言本身没有为函数内置模块归属的原生属性,这一点和Python的__module__有所不同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 16:55:28