简体   繁体   中英

Nodejs illegal operation on a directory

Im trying to compile a folder of markdown files into a single PDF with markdown-pdf NPM package.

I have a simple script to do the job:

var mpdf = require('markdown-pdf');
var fs = require('fs');

var mDocs = fs.readdirSync('./understandinges6/manuscript/');
mDocs = mDocs.map(function(d) { return 'understandinges6/manuscript/' + d });

var Book = 'understandinges6.pdf';

mpdf().concat.from(mDocs).to(Book, function() {
    console.log("Created", Book);
});

But when i execute the script, this error appears:

events.js:154
      throw er; // Unhandled 'error' event
      ^

Error: EISDIR: illegal operation on a directory, read
    at Error (native)

It's weird because i'm in my home folder with the respective permissions. I'm specifying the output folder/file in the script and just reading with fs.readdirSync .

Any idea about this?

mDocs = mDocs.map(function(d) { return 'understandinges6/manuscript/' + d }); you forgot to add "./". Rewrite to mDocs = mDocs.map(function(d) { return './understandinges6/manuscript/' + d });

Cool, i get the problem here:

In the manuscripts/ folder are a images/ sub-folder with some png's. When the scripts tryed to read and transform images/ from .md to .pdf the error was fired.

Here is the array with the images/ inside:

[ 'understandinges6/manuscript/00-Introduction.md',
  'understandinges6/manuscript/01-Block-Bindings.md',
  'understandinges6/manuscript/02-Strings-and-Regular-Expressions.md',
  'understandinges6/manuscript/03-Functions.md',
  'understandinges6/manuscript/04-Objects.md',
  'understandinges6/manuscript/05-Destructuring.md',
  'understandinges6/manuscript/06-Symbols.md',
  'understandinges6/manuscript/07-Sets-And-Maps.md',
  'understandinges6/manuscript/08-Iterators-And-Generators.md',
  'understandinges6/manuscript/09-Classes.md',
  'understandinges6/manuscript/10-Arrays.md',
  'understandinges6/manuscript/11-Promises.md',
  'understandinges6/manuscript/12-Proxies-and-Reflection.md',
  'understandinges6/manuscript/13-Modules.md',
  'understandinges6/manuscript/A-Other-Changes.md',
  'understandinges6/manuscript/B-ECMAScript-7.md',
  'understandinges6/manuscript/Book.txt',
  'understandinges6/manuscript/images' ]

Solution? Just pop() the mDocs array (now just docs ):

var mpdf = require('markdown-pdf');
var fs = require('fs');

var mDocs = fs.readdirSync('understandinges6/manuscript/');
var docs = mDocs.map(function(d) { return 'understandinges6/manuscript/' + d });

docs.pop();

var Book = 'understandinges6.pdf';

mpdf().concat.from(docs).to(Book, function() {
    console.log("Created", Book);
});

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM