🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Electron

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

npm

npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

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

HTML

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

Q&A

1回答

1633閲覧

electron で require を使おうとしたときに not defined エラーが出る

Yhaya

総合スコア439

Electron

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

npm

npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

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

HTML

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

1グッド

1クリップ

投稿2019/10/10 13:49

環境

  • Electron v5.0.2
  • npm 6.9.0

質問したいこと

javascript ファイルの中で require を使おうとするとrequire is not defined エラーが出ます。

ディレクトリ構造は下のようになっています。

bash

1. 2├── assets 3├── node_modules 4├── package-lock.json 5├── package.json 6├── src 7│   ├── index.html 8│   ├── main.js 9│   ├── package.json 10│   └── static 11│ ├── main.css 12│ └── main.js 13└── test.pdf

エラーが出ているのは、下のJSファイルです。

src/static/main.js

javascript

1var url = "../assets/test.pdf"; 2var pdfjsLib = require('pdfjs-dist'); /* ここがエラー */ 3 4pdfjsLib.GlobalWorkerOptions.workerSrc = "../node_modules/pdfjs-dist/build/pdf.worker.js" 5var loadingTask = pdfjsLib.GetDocument(url); 6loadingTask.promise.then(function(pdf) { 7 pdf.getPage(1).then(function(page) { 8 var scale = 1.5; 9 var viewport = page.getViewport({scale: scale,}); 10 11 var canvas = document.getElementById('the-canvas'); 12 var context = canvas.getContext('2d'); 13 canvas.height = viewport.height; 14 canvas.width = viewport.width; 15 16 var renderContext = { 17 canvasContext: context, 18 viewport: viewport, 19 }; 20 page.render(renderContext); 21 }); 22});

試したこと

調べていると、electron の初期化のときに

src/main.js

js

1const {app, BrowserWindow} = require('electron'); 2 3let mainWindow; 4 5function createWindow() { 6 mainWindow = new BrowserWindow({ 7 webPreference: { 8 nodeIntegration: true, 9 plugins: true, 10 }, 11 width: 800, 12 height: 600, 13 }); 14 15 mainWindow.loadFile('index.html'); 16 mainWindow.maximize(); 17 18 mainWindow.on('closed', () => { 19 mainWindow = null; 20 }); 21} 22 23app.on('ready', createWindow);

のように nodeIntegration: true を入れると解決するというのを見つけたので試したのですが依然として require is not defined は解消されませんでした。

よろしくお願いします。

mi0_harukaze767👍を押しています

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

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

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

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

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

guest

回答1

0

contextIsolation: false
を付け加えるといいようです。(Electron 12 より)
参照:https://www.electronjs.org/docs/latest/breaking-changes/#default-changed-contextisolation-defaults-to-true

投稿2021/10/01 02:13

Naoon5031

総合スコア4

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問