我有一個 Electron React 應用程式,我已經幾年沒有更新了,最初使用這些包:
"@rescripts/cli": "^0.0.13",
"@rescripts/rescript-env": "^0.0.11",
"electron": "^7.1.10",
"electron-builder": "^22.3.2",
"react": "^16.12.0",
"react-dom": "^16.12.0",
"react-scripts": "3.4.0",
現在我希望它使用:
"@rescripts/cli": "^0.0.13",
"@rescripts/rescript-env": "^0.0.11",
"electron": "^21.1.1",
"electron-builder": "^23.6.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-scripts": "5.0.1",
當我運行我的應用程式時,Electron 視窗/選單/等會完美加載,但應用程式的實際 React 部分卻沒有。React 應用程式本身的代碼此時并不真正相關,因為它甚至不會呈現基本的“hello world”。
我已經更新(或注釋掉)幾乎所有已棄用的功能,但我認為rescripts/Create React App 的 webpack 部分導致了錯誤,Uncaught ReferenceError: global is not defined.
目前,該global變數在我的代碼中不存在,但我.webpack.config.js有:
module.exports = config => {
config.target = "electron-renderer";
return config;
};
我.rescriptsrc.js有:
module.exports = [require.resolve("./.webpack.config.js")];
我認為這些是罪魁禍首,因為當我點擊錯誤時,它指向的編譯的 webpack 檔案實際上不在我的代碼庫中。
我在 webpack/rescripts 方面遺漏了什么需要更新嗎?在檔案中搜索并不是特別有用。
uj5u.com熱心網友回復:
我認為你的問題是rescripts包裹。存盤庫已存檔,它不支持react-scripts v5,僅支持v4.*.
如果你真的想使用v5,當我遇到這個問題時我正在考慮的一個選項是rescripts用craco. 他們的react-scripts v5支持仍在進行中,但是對于我需要的簡單的 webconfig 修補程式——實際上和你一樣——它奏效了。
uj5u.com熱心網友回復:
結果證明contextIsolationElectron 12 中的重大更改破壞了構建(此處的檔案)。
通過將webPreferences我的主行程檔案中的更改設定contextIsolation為 false,如下所示,一切都再次運行:
webPreferences: {
nodeIntegration: true,
contextIsolation: false
}
我確實認為@gfnoueira 是正確的,因為我rescripts最終需要取出它,因為它不再受支持,但是為了讓應用程式進入“運行”狀態,這成功了!
特別感謝John Lindquist指出了這種棄用!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/519674.html
