如果我将模块发布到npm,fs不会获取文件

时间:2015-09-23 22:32:23

标签: node.js 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文件夹吗?

我的意思是当我想在clear文件夹中测试我的模块时,我安装模块:

npm install <my-module-name>

创建一个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

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

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

var path = require('path');

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