如果我将模块发布到 npm,fs 不会获取文件
fs doesn't get file if i publish module to npm
我在将模块发布到 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 文件夹吗?
我的意思是当我想在透明文件夹中测试我的模块时,我安装模块:
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
有什么想法吗?
这是因为fs.readFileSync
正在查找与当前工作目录相关的文件。尝试使用 __dirname
:
var path = require('path');
var a = fs.readFileSync(path.join(__dirname, 'lib', 'file.txt'));
我在将模块发布到 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 文件夹吗?
我的意思是当我想在透明文件夹中测试我的模块时,我安装模块:
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
有什么想法吗?
这是因为fs.readFileSync
正在查找与当前工作目录相关的文件。尝试使用 __dirname
:
var path = require('path');
var a = fs.readFileSync(path.join(__dirname, 'lib', 'file.txt'));