当我将模块发布到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
有什么想法吗?
答案 0 :(得分:2)
这是因为fs.readFileSync
正在查找相对于当前工作目录的文件。尝试使用__dirname
:
var path = require('path');
var a = fs.readFileSync(path.join(__dirname, 'lib', 'file.txt'));