Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在NodeJs中创建使用文件相对路径的函数(模块内部)_Javascript_Node.js_Typescript - Fatal编程技术网

Javascript 如何在NodeJs中创建使用文件相对路径的函数(模块内部)

Javascript 如何在NodeJs中创建使用文件相对路径的函数(模块内部),javascript,node.js,typescript,Javascript,Node.js,Typescript,我想做的是创建像NodeJSrequire这样的函数。您可以执行require(“./your file”)和require了解文件/your file是调用模块的同级,而无需指定文件的完整路径 我当前的问题是获取当前执行函数的目录(\uu dirname) 我试过以下方法: 调用方法与其他函数包装时,使用module.parent.fileName失败 几乎在那里,但在测试运行程序内部运行时失败(Jest) 这应该是一个简单的解决方案,也许我把它复杂化了?也许你应该使用: var path

我想做的是创建像NodeJS
require
这样的函数。您可以执行
require(“./your file”)
require
了解文件
/your file
是调用模块的同级,而无需指定文件的完整路径

我当前的问题是获取当前执行函数的目录(
\uu dirname

我试过以下方法:

  • 调用方法与其他函数包装时,使用
    module.parent.fileName
    失败
  • 几乎在那里,但在测试运行程序内部运行时失败(Jest)
这应该是一个简单的解决方案,也许我把它复杂化了?

也许你应该使用:

var path = require('path'); 
//_dirname will give you the current position

使用path包可以实现这一点

模块.parent.fileName和V8堆栈跟踪都可以正常工作,但是如果您在
index.js中导出模块

//src/index.js
const lib = require("./my-lib")

exports.myFunction = lib.myFunction
例如:

//src/my-lib.js

function myFunction(){
   const path = module.parent.fileName
   //do stuff
}
然后在
index.js中导出上面的函数

//src/index.js
const lib = require("./my-lib")

exports.myFunction = lib.myFunction

在客户端代码中,如果从
index.js
导入
myFunction
,则检测到的
路径将始终
/src/index.js

,实际上这相当复杂,请参阅(确定模块的
require
函数的上下文可能您不理解我的问题,我如何使用
path
模块获取当前执行模块的目录?是的,我误解了。这可能会有所帮助
//src/index.js
const lib = require("./my-lib")

exports.myFunction = lib.myFunction