Я создаю несколько веб-приложений, используя reactjs, webpack, babel и yarn. Я хочу поделиться своим кодом js (x) между проектами. Поэтому я поместил его в отдельную папку, к которой я хочу обратиться из моих проектов (используя псевдоним в webpack.config. js). Кажется, что babel-loader не понимает синтаксис reactjs в коде, который находится в папке за пределами моего проекта root.
Возможно, что-то не так с моим конфигом, но я не могу его найти. Кто-нибудь еще может это сделать?
Вот мой пакет webpack.config. js:
const webpack = require('webpack');
const path = require('path');
module.exports = env => {
return {
devtool: 'eval',
mode: 'development',
entry: ['index.jsx'],
output: {
filename: 'app.js',
publicPath: 'dist',
path: path.resolve('dist'),
},
// configure the dev server to run
devServer: {
port: 3001,
historyApiFallback: {
disableDotRule: true
},
inline: true,
},
resolve: {
extensions: ['.jsx', '.js'],
modules: ['src', 'node_modules'],
alias: {
$fff: path.resolve('/code/fff/src/')
}
},
module: {
rules: [
{
test: /\.jsx?$/,
include: [
path.resolve(__dirname),
path.resolve('/code/fff/src/')
],
exclude: /node_modules/,
loader: "babel-loader",
},
{
test: /\.scss$/,
use: [{
loader: "style-loader"
}, {
loader: "css-loader"
}, {
loader: "sass-loader",
options: {
mimtype: "text/css",
includePaths: []
}
}]
},
{
test: /\.css$/,
use: [{
loader: "style-loader"
}, {
loader: "css-loader"
}, {
loader: "sass-loader",
options: {
mimtype: "text/css",
includePaths: []
}
}]
},
{
test: /\.(svg|png|ico|xml|json)$/,
loaders: ['file-loader'],
include: path.resolve('assets')
},
],
},
plugins: [
new webpack.DefinePlugin({
__API_URL: JSON.stringify(env.development ? 'https://localhost:44341/api/' : 'xxx/api/'),
__APPLICATION_KEY: JSON.stringify('CrossCheck')
})
]
};
};
.babelr c
{
"presets": ["@babel/preset-env", "@babel/preset-react"]
}
пакет. json
{
"name": "CrossCheckFront",
"version": "1.0.0",
"main": "index.js",
"author": "4E2",
"license": "MIT",
"devDependencies": {
"@babel/core": "^7.8.4",
"@babel/preset-env": "^7.8.4",
"@babel/preset-react": "^7.8.3",
"babel-loader": "^8.0.6",
"html-loader": "^0.5.5",
"html-webpack-plugin": "^3.2.0",
"webpack": "^4.41.6",
"webpack-cli": "^3.3.11",
"webpack-dev-server": "^3.10.3"
},
"dependencies": {
"bootstrap": "^4.4.1",
"cross-fetch": "^3.0.4",
"css-loader": "^3.4.2",
"eslint": "^6.8.0",
"file-loader": "^5.1.0",
"node-sass": "^4.13.1",
"react": "^16.12.0",
"react-dom": "^16.12.0",
"react-redux": "^7.2.0",
"react-redux-oauth2": "^0.5.14",
"react-router-dom": "^5.1.2",
"redux": "^4.0.5",
"redux-thunk": "^2.3.0",
"sass-loader": "^8.0.2",
"style-loader": "^1.1.3"
},
"scripts": {
"start": "webpack-dev-server --env.development",
"build": "webpack --env.production"
}
}
и вот часть вывода ошибки:
ERROR in C:/code/fff/src/InitResetPasswordPage/InitResetPasswordPage.jsx
Module build failed (from ./node_modules/babel-loader/lib/index.js):
SyntaxError: C:\code\fff\src\InitResetPasswordPage\InitResetPasswordPage.jsx: Unexpected token (47:12)
45 | return (
46 |
> 47 | <div className="h-100 row align-items-center">
| ^
48 | <div className="col lg-4"></div>
49 | <div className="col lg-4 fet-loginform">
50 | <h2 className="fet-header">Lösenordsåterställning</h2>
at Parser.raise (C:\code\CrossCheck\CrossCheckFront\node_modules\@babel\parser\lib\index.js:7044:17)
at Parser.unexpected (C:\code\CrossCheck\CrossCheckFront\node_modules\@babel\parser\lib\index.js:8422:16)
at Parser.parseExprAtom (C:\code\CrossCheck\CrossCheckFront\node_modules\@babel\parser\lib\index.js:9701:20)
at Parser.parseExprSubscripts (C:\code\CrossCheck\CrossCheckFront\node_modules\@babel\parser\lib\index.js:9287:23)
at Parser.parseMaybeUnary (C:\code\CrossCheck\CrossCheckFront\node_modules\@babel\parser\lib\index.js:9267:21)
at Parser.parseExprOps (C:\code\CrossCheck\CrossCheckFront\node_modules\@babel\parser\lib\index.js:9137:23)
at Parser.parseMaybeConditional (C:\code\CrossCheck\CrossCheckFront\node_modules\@babel\parser\lib\index.js:9110:23)
at Parser.parseMaybeAssign (C:\code\CrossCheck\CrossCheckFront\node_modules\@babel\parser\lib\index.js:9065:21)
at Parser.parseParenAndDistinguishExpression (C:\code\CrossCheck\CrossCheckFront\node_modules\@babel\parser\lib\index.js:9842:28)
at Parser.parseExprAtom (C:\code\CrossCheck\CrossCheckFront\node_modules\@babel\parser\lib\index.js:9622:21)
at Parser.parseExprSubscripts (C:\code\CrossCheck\CrossCheckFront\node_modules\@babel\parser\lib\index.js:9287:23)
at Parser.parseMaybeUnary (C:\code\CrossCheck\CrossCheckFront\node_modules\@babel\parser\lib\index.js:9267:21)
at Parser.parseExprOps (C:\code\CrossCheck\CrossCheckFront\node_modules\@babel\parser\lib\index.js:9137:23)
at Parser.parseMaybeConditional (C:\code\CrossCheck\CrossCheckFront\node_modules\@babel\parser\lib\index.js:9110:23)
at Parser.parseMaybeAssign (C:\code\CrossCheck\CrossCheckFront\node_modules\@babel\parser\lib\index.js:9065:21)
at Parser.parseExpression (C:\code\CrossCheck\CrossCheckFront\node_modules\@babel\parser\lib\index.js:9017:23)
at Parser.parseReturnStatement (C:\code\CrossCheck\CrossCheckFront\node_modules\@babel\parser\lib\index.js:11091:28)
at Parser.parseStatementContent (C:\code\CrossCheck\CrossCheckFront\node_modules\@babel\parser\lib\index.js:10772:21)
at Parser.parseStatement (C:\code\CrossCheck\CrossCheckFront\node_modules\@babel\parser\lib\index.js:10724:17)
at Parser.parseBlockOrModuleBlockBody (C:\code\CrossCheck\CrossCheckFront\node_modules\@babel\parser\lib\index.js:11298:25)
at Parser.parseBlockBody (C:\code\CrossCheck\CrossCheckFront\node_modules\@babel\parser\lib\index.js:11285:10)
at Parser.parseBlock (C:\code\CrossCheck\CrossCheckFront\node_modules\@babel\parser\lib\index.js:11269:10)
at Parser.parseFunctionBody (C:\code\CrossCheck\CrossCheckFront\node_modules\@babel\parser\lib\index.js:10285:24)
at Parser.parseFunctionBodyAndFinish (C:\code\CrossCheck\CrossCheckFront\node_modules\@babel\parser\lib\index.js:10254:10)
at Parser.parseMethod (C:\code\CrossCheck\CrossCheckFront\node_modules\@babel\parser\lib\index.js:10216:10)
at Parser.pushClassMethod (C:\code\CrossCheck\CrossCheckFront\node_modules\@babel\parser\lib\index.js:11704:30)
at Parser.parseClassMemberWithIsStatic (C:\code\CrossCheck\CrossCheckFront\node_modules\@babel\parser\lib\index.js:11621:12)
at Parser.parseClassMember (C:\code\CrossCheck\CrossCheckFront\node_modules\@babel\parser\lib\index.js:11563:10)
at C:\code\CrossCheck\CrossCheckFront\node_modules\@babel\parser\lib\index.js:11518:14
at Parser.withTopicForbiddingContext (C:\code\CrossCheck\CrossCheckFront\node_modules\@babel\parser\lib\index.js:10599:14)
@ C:/code/fff/src/InitResetPasswordPage/index.js 1:0-40 1:0-40
@ ./src/App/App.jsx
@ ./src/App/index.js
@ ./src/index.jsx
@ multi index.jsx