如果我发布模块到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'));