本文介紹了electron,browserify之后,fs.existsSync不是函數的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我閱讀了很多關于 browserify 和 electron 以及 gui 瀏覽器問題的信息但是browserify還是有問題,說fs.existsSync不是函數",required沒有定義"
* 全文*我用電子創建了簡單的 gui,有 package.json 文件、main.js 和 index.html 文件 + 3,4 個 html 文件,我想在其中創建與 require 一起使用的簡單加載顯示保存窗口"
該功能在 index.html 文件中有效,但在 load.html 文件中無法正常工作,因此我使用命令瀏覽 main.js
var fs = require('electron')//console.log(require('fs').existsSync);var remote = require('electron').remote;//var remote = require('remote');var dialog = require('electron').remote
進入 main.bundle3.js,使用,(在 cmd 中)
瀏覽 main.js >main.bundle3.js
然后 load.html 文件大喊 require 沒有定義和
<代碼>>main.bundle3.js:6945 Uncaught TypeError: fs.existsSync 不是函數在對象.<匿名>(main.bundle3.js:6945)在 Object.require.36.fs (main.bundle3.js:6951)在 s (main.bundle3.js:1)在 main.bundle3.js:1在對象.<匿名>(main.bundle3.js:6794)在 Object.require.35._process (main.bundle3.js:6937)在 s (main.bundle3.js:1)在 e (main.bundle3.js:1)在 main.bundle3.js:1(匿名)@ main.bundle3.js:6945要求.36.fs @ main.bundle3.js:6951s@main.bundle3.js:1(匿名)@ main.bundle3.js:1(匿名)@ main.bundle3.js:6794要求.35._process @ main.bundle3.js:6937s@main.bundle3.js:1e@main.bundle3.js:1(匿名)@ main.bundle3.js:1
package.json
{名稱":RDF",版本":0.1.0","main": "main.js",腳本":{測試":摩卡 -u 出口 -R 規格測試/索引"},開發依賴":{電子":^1.6.2",電子包裝器":^8.6.0","html-browserify": "0.0.6",jquery":^3.2.1"}}
和 load.html 文件
<!DOCTYPE html><html><頭><meta charset="UTF-8"><script src="https://cdn.plot.ly/plotly-latest.min.js"></script><!--<script src="main.js"></script>--><script src="main.bundle3.js"></script><!-- <script type="text/javascript" src="main.js"></script>--><script type="text/javascript" src="./lib/jquery-1.7.2.min.js"></script></頭><身體><h3>加載</h3><p>加載數據</p><!--<input type="button" value="Details" onclick="javascript:$('#mainContainer').load('index.html');"/><br><div id="mainContainer"></div>--><div id="tab33"><div style="text-align:center;"><input type="text" placeholder="只選擇一個文件" id="actual-file" disabled="disabled"/><input type="button" value="選擇一個文件" id="select-file"/></div><br><br><textarea id="content-editor" rows="5"></textarea><br><br><input type="button" id="save-changes" value="保存更改"/><input type="button" id="delete-file" value="刪除文件"/></div><小時><div style="text-align:center;"><p>他的文件內容將與編輯器相同.</p><input type="button" value="選擇一個文件" id="create-new-file"/></div><腳本>var fs = 要求('fs')var {remote} = require('electron').remote ;var {dialog} = require('electron').remotedocument.getElementById('select-file').addEventListener('click',function(){dialog.showOpenDialog(函數(文件名){如果(文件名 === 未定義){console.log("沒有選擇文件");}別的{document.getElementById('actual-file').value = fileNames[0];readFile(fileNames[0], fileReadComplete);}});},錯誤的);//document.getElementById('save-changes').addEventListener('click',function(){var actualFilePath = document.getElementById("actual-file").value;如果(實際文件路徑){saveChanges(actualFilePath,document.getElementById('content-editor').value);}別的{alert("先選擇一個文件");}},錯誤的);//document.getElementById('delete-file').addEventListener('click',function(){var actualFilePath = document.getElementById("actual-file").value;如果(實際文件路徑){刪除文件(實際文件路徑);document.getElementById("實際文件").value = "";document.getElementById("content-editor").value = "";}別的{alert("先選擇一個文件");}},錯誤的);document.getElementById('create-new-file').addEventListener('click',function(){var content = document.getElementById("content-editor").value;dialog.showSaveDialog(函數(文件名){如果(文件名 === 未定義){console.log("你沒有保存文件");返回;}fs.writeFile(文件名,內容,功能(錯誤){如果(錯誤){alert("創建文件出錯"+ err.message)}alert("文件保存成功");});});},錯誤的);函數文件讀取完成(數據){我的數據 = 數據;//做你想做的}函數讀取文件(文件路徑,回調){fs.readFile(filepath, 'utf-8', function (err, data) {如果(錯誤){alert("讀取文件出錯:" + err.message);返回;}回調(數據);document.getElementById("content-editor").value = data;});}函數刪除文件(文件路徑){fs.exists(文件路徑,函數(存在){如果(存在){//文件存在刪除fs.unlink(文件路徑,函數(錯誤){如果(錯誤){alert("更新文件出錯"+ err.message);控制臺日志(錯誤);返回;}});} 別的 {alert("此文件不存在,無法刪除");}});}函數 saveChanges(文件路徑,內容){fs.writeFile(文件路徑,內容,功能(錯誤){如果(錯誤){alert("更新文件出錯"+ err.message);控制臺日志(錯誤);返回;}alert("文件保存成功");});}</腳本></div><!-- <script data-main="main" src="require.js"></script>--></身體></html>
完整的 main.js 文件
//console.log(require('fs'));console.log(require('module').globalPaths);常量 {電子} = 要求('電子');常量 {瀏覽器窗口} = 要求('電子')常量 {應用程序} = 要求('電子');//@show(應用程序)常量路徑 = 要求('路徑')//console.log(process.env.PATH);//(D:electron-v1.6.1-win32-x64
esourcesdefault_app.asrmain.js:325:5)//const BrowserWindow = require('browser-window')常量 url = 要求('url')var html = require('html-browserify');var fs = require('電子')//console.log(require('fs').existsSync);var remote = require('electron').remote;//var remote = require('remote');var dialog = require('electron').remote//dialog = require('electron').dialog//對話 =remote.require('對話')//var load_=require('./load_.js')//瀏覽 htmlvar through = require('through');var htmlclean = 需要('htmlclean');module.exports = 函數(文件,選項){選項 = 選項 ||{};options.htmlclean =typeof options.htmlclean !== '未定義'?options.htmlclean:真;變量緩沖區 = '';if (!/.(tpl|html)/.test(file)) {通過()返回;} 別的 {返回通過(函數(塊){返回緩沖區 += chunk.toString();}, 功能() {var jst = buffer.toString();如果(options.htmlclean){//options.htmlclean 是真的if (typeof options.htmlclean === 'object') {//options.htmlclean 是 htmlclean 模塊的選項對象jst = htmlclean(jst, options.htmlclean);} 別的 {//否則,使用默認選項清理jst = htmlclean(jst);}}var 編譯 = 'module.exports = ';編譯 += JSON.stringify(jst);編譯 += ';
';this.queue(編譯);返回 this.queue(null);});}}//requirejs.config({//默認從js/lib加載任何模塊ID//baseUrl: 'js/lib',//除了,如果模塊ID以app"開頭,//從 js/app 目錄加載它.路徑//config 是相對于 baseUrl 的,并且//從不包含.js"擴展名,因為//路徑配置可以是一個目錄.//路徑:{// 應用程序: ' '/
【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!