質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Electron

Electronは、HTML5とNode.jsというWebの技術を用いてデスクトップアプリケーションを作成できるクロスプラットフォームな実行環境です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

Q&A

0回答

1242閲覧

Monaca上でrequire('electron')をするとUncaught ReferenceError:になってしまう。

T_Furuta

総合スコア25

Electron

Electronは、HTML5とNode.jsというWebの技術を用いてデスクトップアプリケーションを作成できるクロスプラットフォームな実行環境です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Monaca

「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

0グッド

0クリップ

投稿2021/02/25 03:20

編集2021/02/25 05:04

お世話になっております。
Electronで動かしていたアプリをMonaca上でも同様に動かすために、ソースコードを移行したところ、
「const { remote } = require('electron');」でエラー「Uncaught ReferenceError: require is not defined」が発生してしまいました。

ソースコードは下記のようにしております。
・Electronオリジナルソース

html

1index.html 2 3<!DOCTYPE html> 4<html lang="ja"> 5<head> 6 <meta charset="UTF-8"> 7 <meta name="viewport" 8 content="width=device-width, initial-scale=1.0"> 9 <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css"> 10 <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script> 11 <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"></script> 12 <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"></script> 13 <title>Sample App</title> 14</head> 15<body> 16 <nav class="navbar bg-primary mb-4"> 17 <h1 class="display-4 text-light">Sample-app</h1> 18 </nav> 19 <div class="container"> 20 <p id="msg">please click button.</p> 21 <button class="btn btn-primary"onclick="doit()"> 22 Click 23 </button> 24 </div> 25 <script> 26 const { remote } = require('electron'); 27 const { BrowserWindow } = remote; 28 29 30 function doit() { 31 let win = new BrowserWindow({ 32 width: 400, 33 height: 300, 34 webPreferences: { 35 nodeIntegration: true, 36 enableRemoteModule: true 37 } 38 }); 39 win.loadFile('index.html'); 40 document.querySelector('#msg').textContent 41 = 'Create new window!'; 42 } 43 </script> 44</body> 45</html> 46

javascript

1index.js 2 3const { app, Menu, BrowserWindow } = require('electron'); 4const path = require('path'); 5 6 7function createWindow () { 8 win = new BrowserWindow({ 9 width: 400, 10 height: 300, 11 webPreferences: { 12 nodeIntegration: true, 13 enableRemoteModule: true 14 } 15 }); 16 win.loadFile('index.html'); 17} 18 19 20function createMenu() { 21 let menu_temp = [ 22 { 23 label: 'File', 24 submenu: [ 25 {label: 'New', click: ()=>{ 26 console.log('New menu.'); 27 createWindow(); 28 }}, 29 {label: 'File', click: ()=>{ 30 console.log('File menu.'); 31 createWindow(); 32 }}, 33 {role: 'close'}, 34 {type: 'separator'}, 35 {role: 'quit'} 36 ] 37 }, 38 {role: 'editMenu'}, 39 {role: 'viewMenu'}, 40 {role:'windowMenu'}, 41 {label: 'Help', submenu: [ 42 {role: 'about'}, 43 {type: 'separator'}, 44 {role: 'reload'}, 45 {role: 'zoomIn'}, 46 {role: 'zoomOut'} 47 ]} 48 ]; 49 let menu = Menu.buildFromTemplate(menu_temp); 50 51 Menu.setApplicationMenu(menu); 52} 53 54 55createMenu(); 56app.whenReady().then(createWindow); 57

・Monaca移行用プログラム(テンプレートは「最小限のテンプレート」を使用しております。)

html

1index.html 2<!DOCTYPE HTML> 3<html> 4<head> 5 <meta charset="utf-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> 7 <meta http-equiv="Content-Security-Policy" content="default-src * data: gap: content: https://ssl.gstatic.com; style-src * 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'"> 8 <script src="components/loader.js"></script> 9 <link rel="stylesheet" href="components/loader.css"> 10 <link rel="stylesheet" href="css/style.css"> 11 12 <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css"> 13 <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script> 14 <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"></script> 15 <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"></script> 16</head> 17<body> 18 <nav class="navbar bg-primary mb-4"> 19 <h1 class="display-4 text-light">Sample-app</h1> 20 </nav> 21 <div class="container"> 22 <p id="msg">please click button.</p> 23 <button class="btn btn-primary"onclick="doit()"> 24 Click 25 </button> 26 </div> 27 <script> 28 const { remote } = require('electron'); 29 const { BrowserWindow } = remote; 30 31 32 function doit() { 33 let win = new BrowserWindow({ 34 width: 400, 35 height: 300, 36 webPreferences: { 37 nodeIntegration: true, 38 enableRemoteModule: true 39 } 40 }); 41 win.loadFile('index.html'); 42 document.querySelector('#msg').textContent 43 = 'Create new window!'; 44 } 45 </script> 46</body> 47</html> 48

javascript

1index.js 2 3const { app, Menu, BrowserWindow } = require('electron'); 4const path = require('path'); 5 6 7function createWindow () { 8 win = new BrowserWindow({ 9 width: 400, 10 height: 300, 11 webPreferences: { 12 nodeIntegration: true, 13 enableRemoteModule: true 14 } 15 }); 16 win.loadFile('index.html'); 17} 18 19 20function createMenu() { 21 let menu_temp = [ 22 { 23 label: 'File', 24 submenu: [ 25 {label: 'New', click: ()=>{ 26 console.log('New menu.'); 27 createWindow(); 28 }}, 29 {label: 'File', click: ()=>{ 30 console.log('File menu.'); 31 createWindow(); 32 }}, 33 {role: 'close'}, 34 {type: 'separator'}, 35 {role: 'quit'} 36 ] 37 }, 38 {role: 'editMenu'}, 39 {role: 'viewMenu'}, 40 {role:'windowMenu'}, 41 {label: 'Help', submenu: [ 42 {role: 'about'}, 43 {type: 'separator'}, 44 {role: 'reload'}, 45 {role: 'zoomIn'}, 46 {role: 'zoomOut'} 47 ]} 48 ]; 49 let menu = Menu.buildFromTemplate(menu_temp); 50 51 Menu.setApplicationMenu(menu); 52} 53 54 55createMenu(); 56app.whenReady().then(createWindow); 57

起動はMonaca Localkitのプレビュー表示で起動しており、正確なエラーメッセージは下記になります。
Uncaught ReferenceError: require is not defined
at index.html:27

また、このままの状態でボタンを押すと、下記エラーも追加されます。
Uncaught ReferenceError: BrowserWindow is not defined
at doit (index.html:32)
at HTMLButtonElement.onclick (index.html:22)

気がついた点としては、MonacaのElectronのサンプルアプリケーション「Electron TODO App」「Electron 最小限のテンプレート」は、「 require('electron');」をしている箇所がないため、何か根本的に間違えているような気はしております。
何がおかしいのか、ご指摘いただけると助かります。
以上、よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問