【发布时间】:2021-02-07 19:00:45
【问题描述】:
我在让一个简单的 JavaScript 模块示例工作时遇到了一些困难。对于下面的示例代码,我收到一条错误消息:
未捕获的 SyntaxError:请求的模块 '../user_module/User.js' 未提供名为 'User' main.js:1 的导出
这是我的项目目录结构:
模块测试器
├──css
├ ├──module_tester_style.css
├──测试
├ ├──main.js
├──用户模块
├ ├──User.js
├──index.html
这是我的 index.html 文件:
<head>
<title>JS Modules</title>
<link rel="stylesheet" type="text/css" href="./css/module_tester_style.css" />
<script type="module" src="./test/main.js"></script>
</head>
<body>
<h1>Module Tester</h1>
<h3 id="user_results">Enter User Data Below</h3>
<form>
<label for="userName" class="user-name">User Name:</label>
<input id="userNameTF" type="text">
<label for="dobMonth" class="dob-month">DOB Month:</label>
<input id="userDobMonthTF" type="text">
<label for="dobDay" class="dob-day">DOB Day:</label>
<input id="userDobDayTF" type="text">
<label for="dobYear" class="dob-year">DOB Year:</label>
<input id="userDobYearTF" type="text">
<button onclick="getAndDisplayUserAge()">Calculate Age</button>
</form>
</body>
</html>
这里是 main.js:
import { User, DateOfBirth } from '../user_module/User.js'
export function getAndDisplayUserAge() {
let name = document.getElementById("userNameTF").value;
let dobMonth = document.getElementById("userDobMonthTF").value;
let dobDay = document.getElementById("userDobDayTF").value;
let dobYear = document.getElementById("userDobYearTF").value;
let user = new User(name, dobMonth, dobDay, dobYear);
document.getElementById("user-results").value = user.toString();
let dob = user.dob;
console.log("User dob: " + dob);
}
这里是 User.js
export default class User {
constructor(initName, initMonth, initDay, initYear) {
this.name = initName;
this.dob = new DateOfBirth(initMonth, initDay, initYear);
}
toString() {
return this.name + ", born "
+ this.dob.toString()
+ " (" + this.dob.calculateAge()
+ " years old" + ")";
}
}
export class DateOfBirth {
constructor(initMonth, initDay, initYear) {
this.month = initMonth;
this.day = initDay;
this.year = initYear;
}
calculateAgeInYears() {
// GET THE DATE RIGHT NOW
let now = new Date();
let ageInYears = now.getFullYear() - this.year;
if (now.getMonth() - this.month)
ageInYears--;
else if (((now.getMonth() - this.month) === 0)
&& (now.getDate() < this.day))
ageInYears--;
return ageInYears;
}
}
【问题讨论】:
标签: javascript import module export