2016-03-12 60 views
0

我試圖用markdown-pdf NPM包編譯一個markdown文件的文件夾到一個PDF文件中。Nodejs在目錄上的非法操作

我有一個簡單的腳本來完成這項工作:

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); 
}); 

但是,當我執行腳本,出現此錯誤:

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

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

這很奇怪,因爲我同我的主文件夾是各自的權限。我在腳本中指定了輸出文件夾/文件,並且只用fs.readdirSync進行閱讀。

對此有何想法?

+0

那麼是不是錯誤EISDIR明顯嗎?我在mDocs中查詢一個或多個文件IS DIR(是目錄,而不是文件)嘗試'console.log(mDocs);'檢查它 – Molda

+0

mDocs返回正確的數組:[https:// gitlab.com/snippets/16400) – Nano

+0

看到你的答案意味着數組不正確?所以有一個目錄,所以我是對的,不是嗎?儘管你的docs.pop()工作,它是不可靠的,因爲如果文件夾不是數組中的最後一個,它將無法工作。更好的辦法是使用docs.filter過濾掉沒有MD擴展的所有內容 – Molda

回答

0

mDocs = mDocs.map(function(d) { return 'understandinges6/manuscript/' + d });您忘記了添加「./」。改寫爲mDocs = mDocs.map(function(d) { return './understandinges6/manuscript/' + d });

+0

不,沒有問題。仍然表明我的錯誤。 – Nano

0

冷靜,我來到這裏的問題:

manuscripts/文件夾是images/子文件夾下的一些PNG的。當腳本嘗試讀取並將images/.md轉換爲.pdf時,錯誤被觸發。

這裏是與圖像/內部的陣列:

[ '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' ] 

解?只是pop()mDocs陣列(現在只是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); 
}); 
相關問題