Добавление webpack-cli как devDependency приводит к сбою сборки Heroku
У меня есть проект React, который успешно создается и разворачивается на Heroku, но только если webpack-cli
это не devDependency
, Если я yarn add -D webpack-cli
и затем попытка развернуть, сборка завершается неудачно следующим образом:
Entrypoint main = main.js
[0] ./src/index.js 320 bytes {0} [built] [failed] [1 error]
ERROR in ./src/index.js 14:2
Module parse failed: Unexpected token (14:2)
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
|
| ReactDOM.render(
> <Router>
| <ThemeProvider theme={theme}>
| <App />
Child html-webpack-plugin for "index.html":
1 asset
Entrypoint undefined = ./index.html
[0] ./node_modules/html-webpack-plugin/lib/loader.js!./public/index.html 367 bytes {0} [built]
[2] (webpack)/buildin/global.js 472 bytes {0} [built]
[3] (webpack)/buildin/module.js 497 bytes {0} [built]
+ 1 hidden module
Тем не менее, это удается локально. Удаление webpack-cli
вызывает успешную сборку как локально, так и на Heroku.
Редактировать: вот мой package.json
файлы
Когда это не удается:
{
"name": "dmf",
"version": "0.1.0",
"description": "",
"scripts": {
"start": "SKIP_PREFLIGHT_CHECK=true react-scripts start",
"dev": "webpack-dev-server --env.mode development --config webpack.dev.js",
"build": "webpack --env.mode production --config webpack.prod.js",
"heroku-postbuild": "npm run build"
},
"license": "MIT",
"dependencies": {
"react": "^16.8.1",
"react-dom": "^16.8.1",
"react-router-dom": "^5.0.1",
"react-scripts": "^3.0.1",
"styled-components": "^4.3.2",
"webpack": "^4.38.0"
},
"devDependencies": {
"@babel/core": "^7.0.0-0",
"@babel/plugin-transform-react-jsx": "^7.3.0",
"babel-loader": "^8.0.6",
"babel-preset-nano-react-app": "^0.1.0",
"html-webpack-plugin": "^3.2.0",
"parcel-bundler": "^1.11.0",
"webpack-cli": "^3.3.6",
"webpack-dev-server": "^3.7.2",
"webpack-merge": "^4.2.1"
},
"babel": {
"presets": [
"nano-react-app"
],
"plugins": [
[
"@babel/plugin-proposal-class-properties",
{
"loose": true
}
],
[
"@babel/plugin-transform-react-jsx",
{
"pragmaFrag": "React.Fragment"
}
]
]
}
}
Когда это удастся:
{
"name": "dmf",
"version": "0.1.0",
"description": "",
"scripts": {
"start": "SKIP_PREFLIGHT_CHECK=true react-scripts start",
"build": "webpack --env.mode production --config webpack.prod.js",
"heroku-postbuild": "npm run build"
},
"license": "MIT",
"dependencies": {
"react": "^16.8.1",
"react-dom": "^16.8.1",
"react-router-dom": "^5.0.1",
"react-scripts": "^3.0.1",
"styled-components": "^4.3.2",
"webpack": "^4.38.0"
},
"devDependencies": {
"@babel/core": "^7.0.0-0",
"@babel/plugin-transform-react-jsx": "^7.3.0",
"babel-loader": "^8.0.6",
"babel-preset-nano-react-app": "^0.1.0",
"html-webpack-plugin": "^3.2.0",
"parcel-bundler": "^1.11.0",
"webpack-merge": "^4.2.1"
},
"babel": {
"presets": [
"nano-react-app"
],
"plugins": [
[
"@babel/plugin-proposal-class-properties",
{
"loose": true
}
],
[
"@babel/plugin-transform-react-jsx",
{
"pragmaFrag": "React.Fragment"
}
]
]
}
}
Обе версии package.json
строит локально.