![](/img/trans.png)
[英]webpack producing Uncaught SyntaxError: Unexpected token < bundle.js:1
[英]Uncaught SyntaxError: Unexpected token '<' in bundle.js:1
我正在為反應 web 應用程序設置樣板,並在導航到http://localhost:3000
時獲得帶有上述控制台錯誤的空白頁面。 我是一名新的訓練營學生,我對 webpack 配置的了解非常淺,尤其是在有很多依賴項/babel 設置的情況下。 我查看了對發布此問題的其他用戶的回復,但似乎它可能是由圍繞 webpack 配置的任何數量的問題引起的,我擔心在緊迫的時間限制下會進一步破壞事情。
所以我在下面發布了我的一些代碼。 我很困惑-感謝您的任何指點!
公共/索引.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>-= PROJECT TITLE PLACEHOLDER =-</title>
<script src="/bundle.js" defer></script>
</head>
<body>
<div id="app"></div>
</body>
</html>
應用程序/index.js
import '../public/style.css'
import React from 'react'
import ReactDOM from 'react-dom'
import { Provider } from 'react-redux'
import store from './redux'
import Users from './components/Users'
ReactDOM.render(
<Provider store={store}>
<Users />
</Provider>,
document.getElementById('app')
)
webpack.config.js
'use strict'
const { resolve } = require('path')
module.exports = {
entry: ['babel-polyfill', './app/index'],
output: {
path: __dirname,
filename: './public/bundle.js'
},
mode: 'development',
context: __dirname,
devtool: 'source-map',
resolve: {
extensions: ['.js', '.jsx']
},
module: {
rules: [
{
test: /jsx?$/,
include: resolve(__dirname, './app'),
loader: 'babel-loader',
options: {
presets: ['react']
}
},
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
}
package.json
{
"name": "boilermaker",
"version": "0.0.1",
"description": "boilerplate for react-redux-express-sequelize app",
"main": "server/index.js",
"scripts": {
"start-dev": "npm run build-watch & npm run start-server",
"start-server": "nodemon --watch server -e js,html --ignore public server/index.js",
"build-watch": "webpack -w",
"start": "echo 'Running server for production - developers, use npm run start-dev for development' && node server/index.js",
"seed": "node seed.js"
},
"keywords": [
"react",
"redux",
"skeleton"
],
"dependencies": {
"axios": "^0.18.0",
"body-parser": "^1.18.2",
"chalk": "^2.4.1",
"connect-session-sequelize": "^6.0.0",
"crypto": "^1.0.1",
"express": "^4.14.0",
"express-session": "^1.17.0",
"lodash": "^4.17.15",
"morgan": "^1.9.1",
"passport": "^0.4.0",
"passport-google-oauth": "^2.0.0",
"pg": "^7.4.3",
"react": "^16.8.6",
"react-dom": "^16.8.6",
"react-redux": "^5.0.7",
"react-router": "^4.3.1",
"react-router-dom": "^4.2.2",
"redux": "^4.0.0",
"redux-logger": "^3.0.6",
"redux-thunk": "^2.2.0",
"sequelize": "^4.37.8"
},
"devDependencies": {
"babel-core": "^6.26.3",
"babel-eslint": "^8.2.3",
"babel-loader": "^7.1.4",
"babel-polyfill": "^6.26.0",
"babel-preset-env": "^1.7.0",
"babel-preset-react": "^6.24.1",
"babel-preset-stage-2": "^6.24.1",
"babel-register": "^6.26.0",
"css-loader": "^2.1.1",
"eslint": "^4.19.1",
"eslint-config-fullstack": "^5.0.0",
"eslint-plugin-react": "^7.8.2",
"nodemon": "^1.19.1",
"redux-devtools-extension": "^2.13.8",
"style-loader": "^0.21.0",
"webpack": "^4.39.2",
"webpack-cli": "^3.3.7"
}
}
.babelrc
{
"presets": ["babel-preset-react", "react", "env", "stage-2"]
}
這最終是由於一個天真的錯誤,我將 static 中間件放在我的 HTML 發送到我的 Express 路由器之后。 當一位同學要求查看我的路由設置時,我發現了它,此時它突然出現在我身上。 感謝您的評論,對於菜鳥的錯誤,我們深表歉意!
你需要更新你的babel-loader
規則:
{
test: /(jsx|js)?$/, // you have app/index.js not app/index.jsx
include: resolve(__dirname, './app'),
loader: 'babel-loader',
options: {
presets: ['react']
}
},
編輯:我也沒有在package.json
中看到 babel 配置,我也沒有看到.babelrc
所以這是假設配置在.babelrc
中並且為 React/JSX 正確設置(我看到babel-preset-react
在package.json
中babel-preset-react
;我很確定您在 babel 配置中需要它)。
有時,此錯誤是因為package.json
沖突。 如果您在現有的 react 文件夾中啟動一個新的node
項目,它可能會出現此錯誤。 在這種情況下盡量不要使用npm init
或npm init -y
我相信你的問題可能是你的 babel 預設的排序。 它們從右到左應用。
例如,我的一個項目中的 a.babelrc 文件如下所示:
{
"presets": ["@babel/preset-env", "@babel/preset-react"]
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.