如果我发布模块到NPM fs不会得到文件

当我将模块发布到npm时,我遇到了一个问题。

这是文件结构:

- node_modules - lib -- file.txt - index.js - package.json 

我这样使用:

 var a = fs.readFileSync('./lib/file.txt'); 

它在当地发展。 但是,当我发布我的模块npm,它说:

 Error: ENOENT, no such file or directory './lib/file.txt' 

这个错误来自fs,它没有得到文件。 是关于嵌套的node_modules文件夹吗?

我的意思是当我想testing我的模块在清除文件夹,我安装模块:

 npm install <my-module-name> 

创build一个test.js文件并把它放在里面:

 var myModuleName = require('my-module-name'); var a = myModuleName(); console.log(a); 

所以新的结构变成:

 - node_modules -- my-module-name -- node_modules -- lib -- file.txt -- index.js -- package.json - test.js 

任何想法?

这是因为fs.readFileSync正在查找与当前工作目录相关的文件。 尝试使用__dirname

 var path = require('path'); var a = fs.readFileSync(path.join(__dirname, 'lib', 'file.txt'));