2016-05-05 9 views
0

ファイルを開くいくつかの異なるnpmパッケージを試しましたが、すべて同じ問題があります。nodejs複数のhtmlファイルを開いても動作しません

https://www.npmjs.com/package/opn
https://www.npmjs.com/package/open

問題:私は一度に私のハードドライブ上に複数のHTMLファイルを開くことができないのです。しかし私がそれらの1つだけを開こうとすると、それはうまく動作します。この問題の原因は何ですか?

これは、(Webページは私のブラウザで開いていない)動作しません:

var fs = require('fs'); 
var opn = require('opn'); 

fs.writeFile('open.html', 'hello'); 
fs.writeFile('open1.html', 'hello1'); 
fs.writeFile('open2.html', 'hello2'); 
fs.writeFile('open3.html', 'hello3'); 
fs.writeFile('open4.html', 'hello4'); 
fs.writeFile('open5.html', 'hello5'); 

console.log('files created'); 

opn('open.html'); 
opn('open1.html'); 
opn('open2.html'); 
opn('open3.html'); 
opn('open4.html'); 
opn('open5.html'); 

しかしWORKS以下のコードは、(1つのWebページが私のブラウザで正常に開きます):

var fs = require('fs'); 
var opn = require('opn'); 

fs.writeFile('open.html', 'hello'); 

console.log('file created'); 

opn('open.html'); 
あなたは副作用の認識している場合は
+0

これは、おそらく、これが起こっているということです。開いておきたいファイルごとに 'opn'を別に要求してみましたか? –

+0

@BlazeSahlzen私は 'setTimeout(function(){}、500);を追加しようとしました。複数のopnsの周りに正しく動作しました。おそらくfs.writeはファイルをすばやく作成することができず、opnファイルを開くことはできません。ファイルの書き込みをスキップして、変数にhtmlを入れ、その変数をコードにしてウェブサイトを開く方法はありますか?次のようなものです:var abc = 'my html code'; open( 'test.hml'、abc) –

答えて

1

、あなたはfs.writeFileSync代わりのfs.writeFile使用することができます。https://nodejs.org/api/fs.html#fs_fs_writefilesync_file_data_options

fs.writeFileは非同期とWILですすぐに戻ります(まだファイルが作成されていなくても)。操作が完了するのを待つ場合は、コールバックで使用できます。

fs.writeFileSyncは、ファイルが書き込まれるまでメインスレッドをブロックし、その時だけ返します。コードをあまり変更したくない場合は、おそらくそれを使用するだけです。

+0

ご清聴ありがとうございます。 fs.writeFileを使用してコールバックを使用してページを開くことができました。これは完全に機能します。 –

関連する問題