・やりたいこと:electoronのプロジェクトをmysqlに接続したい。
・環境
OS:Mac
フロント:react
node -v: 10.7.0
electron -v: 5.0.1
MySQL -v: 8.0.12
・起こっているエラー:TypeError: Net.createConnection is not a function
(一番直近のエラーコードは以下):
Connection.connect node_modules/mysql/lib/Connection.js:86 83 | if (!this._connectCalled) { 84 | this._connectCalled = true; // Connect either via a UNIX domain socket or a TCP socket. 85 | > 86 | this._socket = this.config.socketPath ? Net.createConnection(this.config.socketPath) : Net.createConnection(this.config.port, this.config.host); // Connect socket to connection domain | ^ 87 | 88 | if (Events.usingDomains) { 89 | this._socket.domain = this.domain;
・行ったこと:
electronのインストール
#package.json { "name": "youtubist", "version": "0.1.0", "private": true, "dependencies": { "mysql": "^2.17.1", "react": "^16.8.6", "react-dom": "^16.8.6", "react-scripts": "3.0.0" }, "scripts": { "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject", "electron": "electron ." }, "eslintConfig": { "extends": "react-app" }, "browserslist": { "production": [ ">0.2%", "not dead", "not op_mini all" ], "development": [ "last 1 chrome version", "last 1 firefox version", "last 1 safari version" ] }, "devDependencies": { "electron": "^5.0.1" }, "main": "src/main.js" }
mysqlのインストールとサーバーの開始
npm install mysql mysql.server start
main.jsの記述
const electron = require('electron') const { app, BrowserWindow } = require('electron') const { Net } = require('net') const path = require('path') const url = require('url') let mainWindow; function createWindow() { mainWindow = new BrowserWindow({ width: 800, height: 600 }); mainWindow.loadURL('http://localhost:3000'); mainWindow.on('closed', function(){ mainWindow = null }) } app.on('ready', createWindow) app.on('window-all-closed', function(){ if (process.platform !== 'darwin'){ app.quit(); } }); app.on('activate', function(){ if (mainWindow === null){ createWindow(); } });
レンダラープロセスにて、dbとの接続コードを記述
/*src/register.js*/ import React from 'react'; import ReactDOM from 'react-dom'; import * as serviceWorker from './serviceWorker'; const { Net } = require('net') class Register extends React.Component { connectToDatabase(){ var mysql = require('mysql') var connection = mysql.createConnection({ host: 'localhost', user: 'admin', password: 'password', database: 'youtubist_database' }) connection.connect(); } render() { this.connectToDatabase() return ( <React.Fragment> <input type="text"></input> <button>register</button> </React.Fragment> ) } } export default Register
エラーが出ているのはこのファイルのconnection.connect()です。
・自分の推察:
これはelectronでは無く、nodejsの問題だと思っている。
connectToDatabase()を行う場所がメインプロセスである必要があると思っている。
しかし、一回mainにconnectToDatabse()等を記述したがそもそも実行されない。
connection.connect()の実行に成功したら、console.log("success"),失敗したらconsole.log("fail")とするif文を書いたが、
どちらも画面に出ない。
なにとぞお力添えのほどよろしくお願いします。
あなたの回答
tips
プレビュー