実現したいこと
JavascriptのTauriで他のNodeモジュールを
インポートできないので、
きちんとindex.htmlで呼び出している
javascript部分main.jsが動作するようにしたい。
前提
使用フレームワーク:Tauri
使用パッケージ管理ツール:npm
フロントエンド言語:HTML/Javascript
バックエンド言語:Rust
発生している問題・エラーメッセージ
TauriでtkinterやElectronより軽量なデスクトップアプリケーションを作成できるということで、
Tauriを使ってcsvを読み込んでChart.jsで散布図をプロットする
デスクトップアプリを勉強で作成したいと思いましたが、
npm install ... で必要なモジュールproj_root内でインストールしているのに
const fs = require('fs');
などの他のモジュールをrequireでインポートすると、
main.jsが機能しなくなり、ボタンを押しても
反応しません。
ソースコード自体はTauri公式が初期設定で用意してくれている
main.jsに上のインポート文を入れただけで機能しなくなりました。
ちなみに私は最近pythonからjavascriptに移ったばかりで、
あまりjavascriptの基本的な文法については勉強中です。
全く原因がわからず困っています。
お力添えをお願いできますでしょうか。
どうかよろしくお願いします。
エラーメッセージ: デスクトップアプリケーションとして動作させているので コンソールにjavascriptのエラーが表示されない。
該当のソースコード
Javascript
1const { invoke } = window.__TAURI__.tauri; 2const fs = require('fs'); //<-これを入れるとmain.js全体が機能しなくなる。 3//PATH:main.js:root_proj/src/main.js 4//同じディレクトリsrc内のindex.htmlからmain.jsを呼び出しています。 5 6let greetInputEl; 7let greetMsgEl; 8 9async function greet() { 10 // Learn more about Tauri commands at https://tauri.app/v1/guides/features/command 11 greetMsgEl.textContent = await invoke("greet", { name: greetInputEl.value }); 12} 13 14window.addEventListener("DOMContentLoaded", () => { 15 greetInputEl = document.querySelector("#greet-input"); 16 greetMsgEl = document.querySelector("#greet-msg"); 17 document.querySelector("#greet-form").addEventListener("submit", (e) => { 18 e.preventDefault(); 19 greet(); 20 }); 21});
html
1<!doctype html> 2<html lang="en"> 3 <head> 4 <meta charset="UTF-8" /> 5 <link rel="stylesheet" href="styles.css" /> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 <title>Tauri App</title> 8 <script type="module" src="/main.js" defer></script> 9 <style> 10 .logo.vanilla:hover { 11 filter: drop-shadow(0 0 2em #ffe21c); 12 } 13 </style> 14 </head> 15 16 <body> 17 <div class="container"> 18 <h1>Welcome to Tauri!</h1> 19 20 21 22 <p>Click on the Tauri logo to learn more about the framework</p> 23 24 <form class="row" id="greet-form"> 25 <input id="greet-input" placeholder="Enter a name..." /> 26 <button type="submit">Greet</button> 27 </form> 28 29 <p id="greet-msg"></p> 30 </div> 31 </body> 32</html>
RUST
1//PATH:main.rs: root_proj/src-tauri/src/main.rs 2// Prevents additional console window on Windows in release, DO NOT REMOVE!! 3#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] 4 5// Learn more about Tauri commands at https://tauri.app/v1/guides/features/command 6#[tauri::command] 7fn greet(name: &str) -> String { 8 format!("Hello, {}! You've been greeted from Rust!", name) 9} 10 11fn main() { 12 tauri::Builder::default() 13 .invoke_handler(tauri::generate_handler![greet]) 14 .run(tauri::generate_context!()) 15 .expect("error while running tauri application"); 16}
試したこと
原因が全く分からず、あまりほかの手段は試していません。
補足情報(FW/ツールのバージョンなど)
node.jsのバージョンは18.17.1
使用OSはwindows10とUbuntu 22.04 LTSの二つともで
同様の現象が起きました。
回答1件
あなたの回答
tips
プレビュー