前提・実現したいこと
【前提】JavaScriptでモジュールを使うために学習中に発生した。
【実現したいこと】JavaScriptファイルを2つ作成し、example2.jsの関数addをexample1.jsにimportし、ボタンが押されたときにconsole.logで出力するという簡単なプログラムを組みたい。
発生している問題・エラーメッセージ
【発生している問題】example1.jsで定義した関数calcAddが変数と認識されない。というか、import先のファイル(example1.js)で変数の宣言が一切できない。
【エラーメッセージ1】VSCode上で関数名calcAddにカーソルをあてると、「'calcAdd'が宣言されていますが、その値が読み取られることはありません。」と表示される。
【エラーメッセージ2】consoleにも
「Uncaught ReferenceError: calcAdd is not defined at HTMLInputElement.onclick ((index):8)」
と表示される。
【知りたいこと】
・import先で関数(変数)が定義できない原因
・解決策
該当のソースコード
html
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <script type="module" src="./example1.js"></script> 6</head> 7<body> 8 <input type="button" value="hoge" onclick="calcAdd"> 9</body> 10</html>
JavaScript
1//こちらがexample1.js 2import {add} from "./example2"; 3 4let calcAdd = function(){ 5 let answer = add(1, 2); 6 console.log(answer); 7}
JavaScript
1//こちらがexample2.js 2export const add = function(num1, num2){ 3 return num1 + num2; 4}
試したこと
【1】関数の記述方法を匿名関数ではなく、以下のように変えてみた。
JavaScript
1function calcAdd(){ 2 let answer = add(1, 2); 3 console.log(answer); 4}
結果、特に変化なし。
エラーメッセージ等も最初に記入したものと同じだった。
補足情報(FW/ツールのバージョンなど)
【使用しているブラウザ】Google Chorome
【環境】VSCodeの画面右下のGo Liveというところからローカルサーバーを立てて実行
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/14 00:28