首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >模块内的相对文件系统写入路径

模块内的相对文件系统写入路径
EN

Stack Overflow用户
提问于 2013-03-07 02:13:02
回答 1查看 27.9K关注 0票数 18

我有一个可执行的node / javascript脚本,它有一个debug boolean,如果设置为true,将会写入几个文件。此可执行文件也是节点模块。根据运行脚本的用户的工作目录,该函数似乎无法找到要写入文件的目录。

该模块的结构如下

代码语言:javascript
复制
output/
lib/
    helpers.js
index.js

我最初的推理是让路径成为。

代码语言:javascript
复制
helper.write = function(data,filename){
    if(typeof data !== "string") data = JSON.stringify(data);
    fs.writeFileSync("./output/"+filename, data);
};

但是,当从node_module文件夹中运行脚本时,这是有效的

代码语言:javascript
复制
fs.writeFileSync("process.cwd()+"/node_modules/the_module/output/"+filename, data);

像这样

代码语言:javascript
复制
node ./my_app/node_modules/the_module/index.js

如果模块在使用该库的另一个可执行文件中使用,这会变得更加令人困惑。

代码语言:javascript
复制
node ./my_app/run.js

有没有一种方法可以独立于所有这些变量保存文件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-07 02:23:55

如果我对这个问题的理解正确的话,您希望始终写入相对于当前脚本的路径。要获取当前正在执行的脚本所在目录的名称,可以使用__dirname,如下所示:

代码语言:javascript
复制
var path = require('path');

helper.write = function(data,filename){
  if(typeof data !== "string") data = JSON.stringify(data);
  var file = path.join(__dirname, 'output', filename);
  fs.writeFileSync(file, data);
};

话虽如此,我并不认为在node_modules目录中写入文件是一种好的做法。我建议您的模块需要文件系统中其他位置的文件的完整路径。如果调用方希望写入其自己项目树中的输出目录,则可以再次使用相同的__dirname技巧。

票数 44
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15254861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档