Heim > Fragen und Antworten > Hauptteil
Ich muss reines js verwenden, um Bilder zu lesen. Das Folgende ist der Code in der Knotenumgebung
var fs = require("fs");
var imageFile = fs.readFileSync('test.png', 'base64');
console.log(imageFile);
Verwenden Sie browserify, um in zu konvertieren
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
},{}],2:[function(require,module,exports){
var fs = require("fs");
var imageFile = fs.readFileSync('test.png', 'base64');
console.log(imageFile);
},{"fs":1}]},{},[2]);
Beim Ausführen in der Browserumgebung wird der folgende Fehler angezeigt. Es scheint, dass browserify das fs-Modul nicht für die Ausführung im Browser konvertieren kann (wenn Sie kein HTML-Formular verwenden). js:5 Uncaught TypeError: fs.readFileSync ist keine Funktion仅有的幸福2017-05-16 13:46:07
首先明确一点,类似 browserify
这样的工具仅仅能将使用 commonjs
模块加载机制的 JavaScript 代码转换成为浏览器可以理解的形式。这并不代表着任意 Node.js 代码都可以在浏览器端使用。
最典型的例子就是 fs 模块,它是完全不可能被浏览器端调用的。对本地文件的读写能力完全违反了浏览器本身的安全机制,试想你打开一个网页,然后这个网页竟然就可以读写你本地硬盘上的文件,这该是多么可怕的一件事情!
因此,你的思路本身或许需要重新整理一下,什么样的功能需求促使你要在网页端读写文件呢?如果仅仅是在客户端对用户在 file uploader
中上传的文件预处理,那么你该使用浏览器端原生的 FileReader
API