web-dev-qa-db-ja.com

electron-react-boilerplateでmaterial-uiを適切に設定する方法

Electron-react-boilerplateで実行されているmaterial-ui(v4.9.5)ライブラリに問題があります。再現するには:

  1. インストールチュートリアル に従ってください
  2. yarn add @material-ui/core
  3. ライブラリからいくつかのウィジェットを追加します。
diff --git a/app/components/Home.tsx b/app/components/Home.tsx
index 20748ab..f4f9a21 100644
--- a/app/components/Home.tsx
+++ b/app/components/Home.tsx
@@ -1,11 +1,13 @@
 import React from 'react';
 import { Link } from 'react-router-dom';
+import { Button } from '@material-ui/core';
 import routes from '../constants/routes.json';
 import styles from './Home.css';

 export default function Home() {
   return (
     <div className={styles.container} data-tid="container">
+      <Button>Hello</Button>
       <h2>Home</h2>
       <Link to={routes.COUNTER}>to Counter</Link>
     </div>

yarn devを実行すると、すべてが正常に動作します。ただし、yarn startは以下を生成します。

init.ts:204 Unable to load preload script: /home/vasniktel/boiler-test/app/dist/renderer.prod.js
(anonymous) @ init.ts:204
init.ts:205 TypeError: Cannot use 'in' operator to search for 'ontouchstart' in null
    at Module../app/index.tsx (/home/vasniktel/boiler-test/app/dist/renderer.prod.js:2)
    at n (/home/vasniktel/boiler-test/app/dist/renderer.prod.js:2)
    at module.exports../app/app.global.css (/home/vasniktel/boiler-test/app/dist/renderer.prod.js:2)
    at Object.<anonymous> (/home/vasniktel/boiler-test/app/dist/renderer.prod.js:2)
    at Object.<anonymous> (/home/vasniktel/boiler-test/app/dist/renderer.prod.js:3)
    at Module._compile (internal/modules/cjs/loader.js:880)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:892)
    at Module.load (internal/modules/cjs/loader.js:735)
    at Module._load (internal/modules/cjs/loader.js:648)
    at Module._load (electron/js2c/asar.js:717)
(anonymous) @ init.ts:205

これを修正する方法はありますか?

5
Vasniktel

main.dev.tsファイルからこれらの行を削除すると問題が解決するようです:

@@ -58,14 +58,9 @@ const createWindow = async () => {
     show: false,
     width: 1024,
     height: 728,
-    webPreferences:
-      process.env.NODE_ENV === 'development' || process.env.E2E_BUILD === 'true'
-        ? {
-            nodeIntegration: true
-          }
-        : {
-            preload: path.join(__dirname, 'dist/renderer.prod.js')
-          }
+    webPreferences: {
+      nodeIntegration: true
+    }
   });
5
Vasniktel