簡體   English   中英

HTML 加載,但腳本不運行

[英]HTML loads, but scripts don't run

我通過 Parcel 編譯了這個腳本:

/src/Main.ts

import { app, BrowserWindow, Menu } from 'electron';

alert('Hi');
document.title = 'Xxx';
console.log('Hello');

包裹的條目 HTML:

/src/Main.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <!-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP -->
    <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'">
    <meta http-equiv="X-Content-Security-Policy" content="default-src 'self'; script-src 'self'">
    <title>Empty Electron App</title>
  </head>
  <body>
    <script>alert('Aaaaah!');
    </script>
    <script src="./Main.ts"></script>
  </body>
</html>

我正在與 Parcel 捆綁使用:

/build.js

// ...
const entry = './src/Main.html';
const options = {
    outDir: './build',
    publicUrl: './',
    sourceMaps: false,
    autoInstall: false,
    hmr: false,
    target: 'electron',
};

// ...
(async () => {
    // ...
    bundler.bundle();
})();

似乎 Electron 沒有運行入口點 HTML 中包含的腳本(不會發出警報,也不會改變頁面標題,也不會登錄到控制台)。 就像我說的, console.log()不會對運行 Electron 的主機環境終端產生任何影響。 我通過在 HTML 中插入文本節點進一步測試了這一點,如下所示:

<!DOCTYPE HTML>
<html>
<head>
    <!-- ... -->
</head>
<body>
    Foo foo foo foo foo
</body>
</html>

應用程序成功渲染Foo foo foo foo foo 腳本不做任何事情。 我錯過了一些配置嗎?

這里有更多來源:

這是 output HTML 的樣子:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <!-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP -->
    <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'">
    <meta http-equiv="X-Content-Security-Policy" content="default-src 'self'; script-src 'self'">
    <title>Empty Electron App</title>
  </head>
  <body>
    <script>alert('Aaaaah!');</script>
    <script src="Main.d562fc5b.js"></script>
  </body>
</html>

文件結構( /build ):

在此處輸入圖像描述

在您的build.js文件中,將target選項替換為web而不是electron

更新:我實際上找到了解決您問題的更好方法,因為您可能需要在應用程序中的某個時間使用正確的目標。 見下文:

問題是nodeIntegration未在BrowserWindow上啟用,盡管您在選項中指定了它。 這是因為默認情況下contextIsolation處於啟用狀態,並且這兩個選項不能一起使用。 在構建webPreferences時在 webPreferences 中添加contextIsolation: false也應該可以解決您的問題,同時將包裹目標保持為electron

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM