流れ
HTML + JavaScriptで、自分好みのツール(WYSIWYGエディタ的なもの)を作り、Chromeから
files:///
で開いて使用していました
しかし機能的に不足を感じ、Node.jsを使った形に作り直すことにしました
(きっかけは単にfaviconを表示したいってだけでしたが、他にもWebサイトとのやり取りなど色々やれることを試してみたいと思っています)
問題
ところが
で
<img src="files:///…">
とローカルファイル(画像)を表示しようとすると
Not allowed to load local resource
というエラーが出てしまいます
確認したこと
Chromeの起動オプションには元々既に
--allow-file-access-from-files
と書いてあり、Node.jsを使わない場面でなら問題なくローカルファイルを読み込めていました
(Chromeの「Google Chrome を閉じた際にバックグラウンド アプリの処理を続行する」のチェックも外してあります)
希望すること
ローカルファイルを表示しつつNode.jsの機能も使う方法が知りたい
(例えばなんとなく想像する方法としては、index.htmlだけは普通にfiles:///で開いて、そこからどうにかしてNode.jsとやり取りするとか…?できるかわかりませんが)
あるいは代替となる方法が知りたい
コンパイルやアップロードに時間をかけるような方法は望ましくないです
(HTML + JavaScriptでのローカルアプリを自作しているのもそれゆえ)
Electronとかはコンパイルするっぽいですよね…?
server.js
ひとまずどこかから適当に拾ってきただけのものですが…
JavaScript
1var http = require('http'); 2var fs = require('fs'); 3var path = require('path'); 4var mime = { 5 ".html": "text/html", 6 ".css": "text/css", 7 ".js": "text/javascript" 8 // 読み取りたいMIMEタイプはここに追記 9}; 10 11var http_server = new http.createServer(function(req, res) { 12 13 if (req.url == '/') { 14 filePath = '/index.html'; 15 } else { 16 filePath = req.url; 17 } 18 var fullPath = __dirname + filePath; 19 20 res.writeHead(200, {"Content-Type": mime[path.extname(fullPath)] || "text/plain"}); 21 fs.readFile(fullPath, function(err, data) { 22 if (err) { 23 // エラー時の応答 24 } else { 25 res.end(data, 'UTF-8'); 26 } 27 }); 28}).listen(3000); 29console.log('Server running at http://localhost:3000/');
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/27 00:41 編集
退会済みユーザー
2019/07/27 02:34 編集
2019/07/27 11:54