模块内的相对文件系统写path
我有一个可执行的节点/ JavaScript脚本有一个debugging布尔值,如果设置为true,将写入几个文件。 这个可执行文件也是节点模块。 根据运行脚本的用户的工作目录,似乎该function找不到写入文件的目录。
模块是这样构成的
output/ lib/ helpers.js index.js
我原来的理由是要有path。
helper.write = function(data,filename){ if(typeof data !== "string") data = JSON.stringify(data); fs.writeFileSync("./output/"+filename, data); };
但是,这在从node_module文件夹内运行脚本时起作用
fs.writeFileSync("process.cwd()+"/node_modules/the_module/output/"+filename, data);
喜欢这个
node ./my_app/node_modules/the_module/index.js
如果模块在使用该库的另一个可执行文件中使用,则会变得更加混乱。
node ./my_app/run.js
有没有办法独立于所有这些variables保存文件?
如果我正确地理解了这个问题,你总是想写一个相对于当前脚本的path。 要获取当前正在执行的脚本所在目录的名称,可以使用__dirname
如下所示:
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
目录下写文件不是一个好习惯。 我build议你的模块需要文件系统中某个文件的完整path。 如果调用者希望在自己的项目树中写入输出目录,则可以再次使用相同的__dirname
技巧。
- node.js – caching映像到文件系统和pipe道映像以响应
- 在fs.readFile()的callback函数中使用Email.send时发生meteor“光纤”错误
- Node.js:console.log消息不显示,如果方法抛出exception…为什么?
- 我如何在Node js中使用fs.read()
- asynchronous读取和cachingnodejs中的多个文件
- 我怎样才能asynchronous删除多个文件?
- fs.writeFileSync给出错误:UNKNOWN,在nodejs中写入同步文件的正确方法
- 一旦我开始添加文件到我的控制器文件夹代码中断 – 为什么?
- 如何不覆盖node.js中的文件