我正在构建一个 React Web 应用程序,但我收到了 SyntaxError: Unexpected token '<' when importing react components that are in an array object from '..utils/constants' .js file.
我的代码是这样的:
// SideBar.jsx
// React Component
import { Stack } from '@mui/material'
import { categories } from '../utils/constants'
export default function SideBar() {
return (
<div>
Sidebar
</div>
)
}
// constants.js
// this is my file containing icons imported from material UI.
import MusicNoteIcon from '@mui/icons-material/MusicNote';
import HomeIcon from '@mui/icons-material/Home';
import CodeIcon from '@mui/icons-material/Code';
import OndemandVideoIcon from '@mui/icons-material/OndemandVideo';
import SportsEsportsIcon from '@mui/icons-material/SportsEsports';
import LiveTvIcon from '@mui/icons-material/LiveTv';
import SchoolIcon from '@mui/icons-material/School';
import FaceRetouchingNaturalIcon from '@mui/icons-material/FaceRetouchingNatural';
import CheckroomIcon from '@mui/icons-material/Checkroom';
import GraphicEqIcon from '@mui/icons-material/GraphicEq';
import TheaterComedyIcon from '@mui/icons-material/TheaterComedy';
import FitnessCenterIcon from '@mui/icons-material/FitnessCenter';
import DeveloperModeIcon from '@mui/icons-material/DeveloperMode';
export const logo = 'https://i.ibb.co/s9Qys2j/logo.png';
// I am getting error here
export const categories = [
{ name: 'New', icon: <HomeIcon />, }, // Error comes from icons
{ name: 'JS Mastery', icon: <CodeIcon />, },
{ name: 'Coding', icon: <CodeIcon />, },
{ name: 'ReactJS', icon: <CodeIcon />, },
{ name: 'NextJS', icon: <CodeIcon />, },
{ name: 'Music', icon: <MusicNoteIcon /> },
{ name: 'Education', icon: <SchoolIcon />, },
{ name: 'Podcast', icon: <GraphicEqIcon />, },
{ name: 'Movie', icon: <OndemandVideoIcon />, },
{ name: 'Gaming', icon: <SportsEsportsIcon />, },
{ name: 'Live', icon: <LiveTvIcon />, },
{ name: 'Sport', icon: <FitnessCenterIcon />, },
{ name: 'Fashion', icon: <CheckroomIcon />, },
{ name: 'Beauty', icon: <FaceRetouchingNaturalIcon />, },
{ name: 'Comedy', icon: <TheaterComedyIcon />, },
{ name: 'Gym', icon: <FitnessCenterIcon />, },
{ name: 'Crypto', icon: <DeveloperModeIcon />, },
];
export const demoThumbnailUrl = 'https://i.ibb.co/G2L2Gwp/API-Course.png';
export const demoChannelUrl = '/channel/UCmXmlB4-HJytD7wek0Uo97A';
export const demoVideoUrl = '/video/GDa8kZLNhJ4';
export const demoChannelTitle = 'JavaScript Mastery';
export const demoVideoTitle = 'Build and Deploy 5 JavaScript & React API Projects in 10 Hours - Full Course | RapidAPI';
export const demoProfilePicture = 'http://dergipark.org.tr/assets/app/images/buddy_sample.png'
// package.json
{
"name": "youtube_clone",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vite build",
"lint": "eslint .",
"preview": "vite preview"
},
"dependencies": {
"@emotion/react": "^11.13.3",
"@emotion/styled": "^11.13.0",
"@mui/icons-material": "^6.1.1",
"@mui/material": "^6.1.1",
"axios": "^1.7.7",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-player": "^2.16.0",
"react-router-dom": "^6.26.2",
"react-scripts": "^5.0.1"
},
"devDependencies": {
"@eslint/js": "^9.9.0",
"@types/react": "^18.3.3",
"@types/react-dom": "^18.3.0",
"@vitejs/plugin-react": "^4.3.1",
"eslint": "^9.9.0",
"eslint-plugin-react": "^7.35.0",
"eslint-plugin-react-hooks": "^5.1.0-rc.0",
"eslint-plugin-react-refresh": "^0.4.9",
"globals": "^15.9.0",
"vite": "^5.4.1"
}
}
日志
Uncaught SyntaxError: Unexpected token '<' (at constants.js?t=1727009474696:18:24)
我正在构建一个 YouTube 克隆。 这个特定组件的作用是在侧边栏上显示类别,就像 YouTube 中一样。
我想从 util/constants.js 文件导入“类别”数组,并在侧边栏中显示图标和类别名称。
如果我评论类别数组,一切都会正常。但是当它没有被注释时,它会给我 { SyntaxError: Unexpected token '<' }
我尝试过直接在我的反应组件文件中导入图标,它们工作得很好,就像这样。 我想要的是从 js 文件导入所有这些图标并将它们映射到我的 React 组件中。 我使用 vite 来构建我的 React 文件。
我注意到
constant.js
中存在一些问题。
{ name: 'New', icon: <HomeIcon />, },
。;
。尝试使用这个
code
:
import MusicNoteIcon from '@mui/icons-material/MusicNote';
import HomeIcon from '@mui/icons-material/Home';
import CodeIcon from '@mui/icons-material/Code';
import OndemandVideoIcon from '@mui/icons-material/OndemandVideo';
import SportsEsportsIcon from '@mui/icons-material/SportsEsports';
import LiveTvIcon from '@mui/icons-material/LiveTv';
import SchoolIcon from '@mui/icons-material/School';
import FaceRetouchingNaturalIcon from '@mui/icons-material/FaceRetouchingNatural';
import CheckroomIcon from '@mui/icons-material/Checkroom';
import GraphicEqIcon from '@mui/icons-material/GraphicEq';
import TheaterComedyIcon from '@mui/icons-material/TheaterComedy';
import FitnessCenterIcon from '@mui/icons-material/FitnessCenter';
import DeveloperModeIcon from '@mui/icons-material/DeveloperMode';
export const logo = 'https://i.ibb.co/s9Qys2j/logo.png';
export const categories = [
{ name: 'New', icon: <HomeIcon /> },
{ name: 'JS Mastery', icon: <CodeIcon /> },
{ name: 'Coding', icon: <CodeIcon /> },
{ name: 'ReactJS', icon: <CodeIcon /> },
{ name: 'NextJS', icon: <CodeIcon /> },
{ name: 'Music', icon: <MusicNoteIcon /> },
{ name: 'Education', icon: <SchoolIcon /> },
{ name: 'Podcast', icon: <GraphicEqIcon /> },
{ name: 'Movie', icon: <OndemandVideoIcon /> },
{ name: 'Gaming', icon: <SportsEsportsIcon /> },
{ name: 'Live', icon: <LiveTvIcon /> },
{ name: 'Sport', icon: <FitnessCenterIcon /> },
{ name: 'Fashion', icon: <CheckroomIcon /> },
{ name: 'Beauty', icon: <FaceRetouchingNaturalIcon /> },
{ name: 'Comedy', icon: <TheaterComedyIcon /> },
{ name: 'Gym', icon: <FitnessCenterIcon /> },
{ name: 'Crypto', icon: <DeveloperModeIcon /> },
];
export const demoThumbnailUrl = 'https://i.ibb.co/G2L2Gwp/API-Course.png';
export const demoChannelUrl = '/channel/UCmXmlB4-HJytD7wek0Uo97A';
export const demoVideoUrl = '/video/GDa8kZLNhJ4';
export const demoChannelTitle = 'JavaScript Mastery';
export const demoVideoTitle = 'Build and Deploy 5 JavaScript & React API Projects in 10 Hours - Full Course | RapidAPI';
export const demoProfilePicture = 'http://dergipark.org.tr/assets/app/images/buddy_sample.png';