Javascript ReactJS模块生成失败:语法错误:意外标记-ReactDOM.render
为什么我会在下面看到这个错误?我的语句Javascript ReactJS模块生成失败:语法错误:意外标记-ReactDOM.render,javascript,reactjs,react-dom,Javascript,Reactjs,React Dom,为什么我会在下面看到这个错误?我的语句ReactDOM.render( app.js文件 import react from 'react' import ReactDom from 'react-dom' import App from 'components/App' require('index.html'); // Create app const container = document.getElementById('app-container'); // Render ap
ReactDOM.render(
app.js文件
import react from 'react'
import ReactDom from 'react-dom'
import App from 'components/App'
require('index.html');
// Create app
const container = document.getElementById('app-container');
// Render app
ReactDOM.render(<App />, container);
尝试将resolve
属性添加到您的网页配置文件:
resolve: {
extensions: ['.js', '.jsx']
},
module: {
loaders: [
{
test: /\.jsx?$/,
exclude: /node_modules/,
loaders: ["babel-loader"]
}
]
}
将此用作您的网页包配置文件
const webpack = require('webpack');
const path = require('path');
module.exports = {
entry: [
'./src/app.js'
],
output: {
path: path.resolve(__dirname, './build'),
filename: 'app.bundle.js',
},
module: {
loaders: [
{
test: /\.html$/,
loader: 'file-loader?name=[name].[ext]',
},
{
test: /\.jsx?$/,
exclude: /node_modules/,
loader: 'babel-loader',
query: {
presets: ['es2015', 'react']
}
},
],
},
plugins: [
new webpack.NamedModulesPlugin(),
]
};
您缺少预设安装babel preset react for jsx语法
npm install babel-preset-react
预设
loaders: [{
test: /\.jsx?$/,
exclude: /node_modules/,
loader: 'babel-loader',
query: {
presets: ['react', 'es2015']
}
}
]
我遇到了同样的错误,我只需要将一个.babelrc文件添加到项目的路由中(与package.json位置相同),其中包含以下内容:
{
"presets": [
"env",
"react"
],
"plugins": [
"transform-class-properties"
]
}
如果有人正在与CRA合作,并出现此错误。解决方案如下
转到package.json
并添加babel
config。如果我看起来不是那么慷慨,下面是代码
"babel": {
"presets": [
"react-app"
]
}
保持CRA设置的其余部分不变。实际上CRA使用自己的自定义预设react app
,这就是在webpack.config.js
文件中设置的。因此不需要其他预设。或者您可以将预设放在项目根目录下的.babelrc文件中。当然,您需要先安装它
像这样
/path/to/your/project/.babelrc
{
“预设”:[“@babel/preset env”,“@babel/preset react”]
}
我有这个问题,上面的答案都没有帮助
我有一个符号链接的文件夹——我的代码在D:/code上,但我是通过符号链接从C:/code运行的
其中一个js包正在识别链接并尝试在D中运行,但失败了
我必须从D:打开代码,而不是从符号链接路径打开代码,问题就消失了。在根文件夹中添加.babelrc
,并确保它是“预设”否“预设”
{
"presets" : ["@babel/preset-env", "@babel/preset-react"]
}
这是我的webpack.config.js
供参考:
const path=require('path');
const webpack=require('webpack');
module.exports={
条目:'./src/index.js',
模式:"发展",,
模块:{
规则:[
{
测试:/\(js|jsx)$/,
排除:/(节点\模块)/,
加载器:“巴别塔加载器”,
选项:{预设:[“@babel/env”]}
},
{
测试:/\.css$/,,
用法:[“样式加载器”、“css加载器”]
}
]
},
解析:{扩展名:['*','.js','.jsx']},
输出:{
path:path.resolve(uu dirname,'dist/'),
publicPath:“/dist/”,
文件名:“bundle.js”
},
开发服务器:{
contentBase:path.join(uu dirname,'public/'),
港口:3000,
公共路径:'http://localhost:3000/dist/',
hotOnly:真的
},
插件:[新网页包.HotModuleReplacementPlugin()]
}
Babel loader v8需要@Babel v7才能工作
package.json
"devDependencies": {
"@babel/cli": "^7.10.4",
"@babel/core": "^7.10.4",
"@babel/preset-env": "^7.10.4",
"@babel/preset-react": "^7.10.4",
"babel-loader": "^8.1.0"}
ReactDOM.render(,container);
不是有效的JS。
只能在.JSX文件中使用。@XDreamCodeing只要JSX被传输到纯JS,你就可以在JS文件中使用它……你会希望你的加载程序测试的正则表达式也包括一个.JS扩展名和一个.JSX。它可能是这样的:/\(JS | JSX)$/
,这将确保Webpack传输你的app.js文件以及你的所有源代码。你这里有很多错误。React应该在导入时大写,ReactDom中的Dom应该大写。无需导入index.html
。此外,你的组件导入路径应该是/components/app
。接下来,你需要必须设置Babel预设才能传输代码,Babel-preset-es2015
和Babel-preset-react
@MichaelLyons/\.jsx?$
匹配.js和.jsx…问号出现了这不是问题。默认情况下,Webpack已经解决了.js。谢谢!这就是它…我在遵循一个老朋友的教程project。我更新的React项目运行良好,所以我使用的是旧的过时的webpack.config。正如其他人所说,我没有将一些导入内容大写。谢谢!我用这个更现代的webpack.config修复了应用程序,并重命名了我的导入内容,现在它可以工作了。3分钟后!事实上,现在使用webpack 2 module.loader的应用程序在中已被弃用支持module.rules,其中一个相当于预设:['es2015','react']关于babel 7?我正在使用。babelrc在另一个应用程序上工作,但在另一个应用程序中不工作。这是为我准备的,但我必须将env
更改为@babel/env
,将react
更改为react-app
。我正在使用一个带有Create-react-react-app+TypeScript+Rescripts()
{
"presets" : ["@babel/preset-env", "@babel/preset-react"]
}
"devDependencies": {
"@babel/cli": "^7.10.4",
"@babel/core": "^7.10.4",
"@babel/preset-env": "^7.10.4",
"@babel/preset-react": "^7.10.4",
"babel-loader": "^8.1.0"}