diff --git a/config/paths.js b/config/paths.js index bb1ba76125..c3594e1451 100644 --- a/config/paths.js +++ b/config/paths.js @@ -39,6 +39,7 @@ var nodePaths = (process.env.NODE_PATH || '') module.exports = { appBuild: resolveApp('build'), appHtml: resolveApp('index.html'), + appIndexJs: resolveApp('src/index.js'), appPackageJson: resolveApp('package.json'), appSrc: resolveApp('src'), testsSetup: resolveApp('src/setupTests.js'), @@ -56,6 +57,7 @@ function resolveOwn(relativePath) { module.exports = { appBuild: resolveApp('build'), appHtml: resolveApp('index.html'), + appIndexJs: resolveApp('src/index.js'), appPackageJson: resolveApp('package.json'), appSrc: resolveApp('src'), testsSetup: resolveApp('src/setupTests.js'), @@ -70,6 +72,7 @@ module.exports = { module.exports = { appBuild: resolveOwn('../build'), appHtml: resolveOwn('../template/index.html'), + appIndexJs: resolveOwn('../template/src/index.js'), appPackageJson: resolveOwn('../package.json'), appSrc: resolveOwn('../template/src'), testsSetup: resolveOwn('../template/src/setupTests.js'), diff --git a/config/webpack.config.dev.js b/config/webpack.config.dev.js index 86f592ba5b..a88409f2d0 100644 --- a/config/webpack.config.dev.js +++ b/config/webpack.config.dev.js @@ -49,7 +49,7 @@ module.exports = { // We ship a few polyfills by default. require.resolve('./polyfills'), // Finally, this is your app's code: - path.join(paths.appSrc, 'index') + paths.appIndexJs // We include the app code last so that if there is a runtime error during // initialization, it doesn't blow up the WebpackDevServer client, and // changing JS code would still trigger a refresh. diff --git a/config/webpack.config.prod.js b/config/webpack.config.prod.js index 2a482f9547..552ded4855 100644 --- a/config/webpack.config.prod.js +++ b/config/webpack.config.prod.js @@ -48,7 +48,7 @@ module.exports = { // In production, we only want to load the polyfills and the app code. entry: [ require.resolve('./polyfills'), - path.join(paths.appSrc, 'index') + paths.appIndexJs ], output: { // The build folder. diff --git a/scripts/start.js b/scripts/start.js index be1d6f80e0..185299052b 100644 --- a/scripts/start.js +++ b/scripts/start.js @@ -11,6 +11,7 @@ process.env.NODE_ENV = 'development'; +var fs = require('fs'); var path = require('path'); var chalk = require('chalk'); var webpack = require('webpack'); @@ -170,6 +171,20 @@ function openBrowser(port, protocol) { opn(protocol + '://localhost:' + port + '/'); } +function checkRequiredFiles() { + var filesPathToCheck = [paths.appHtml, paths.appIndexJs]; + filesPathToCheck.forEach(function(filePath) { + try { + fs.accessSync(filePath, fs.F_OK); + } catch (err) { + var fileName = path.basename(filePath); + console.log( + chalk.red(`Cannot find ${fileName} in ${filePath} directory`) + ); + process.exit(1); + } + }); +} // We need to provide a custom onError function for httpProxyMiddleware. // It allows us to log custom error messages on the console. function onProxyError(proxy) { @@ -180,7 +195,7 @@ function onProxyError(proxy) { ' from ' + chalk.cyan(host) + ' to ' + chalk.cyan(proxy) + '.' ); console.log( - 'See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (' + + 'See https://nodejs.org/api/errors.html#errors_common_system_errors for more information (' + chalk.cyan(err.code) + ').' ); console.log(); @@ -190,7 +205,7 @@ function onProxyError(proxy) { if (res.writeHead && !res.headersSent) { res.writeHead(500); } - res.end('Proxy error: Could not proxy request ' + req.url + ' from ' + + res.end('Proxy error: Could not proxy request ' + req.url + ' from ' + host + ' to ' + proxy + ' (' + err.code + ').' ); } @@ -304,6 +319,7 @@ function runDevServer(port, protocol) { function run(port) { var protocol = process.env.HTTPS === 'true' ? "https" : "http"; + checkRequiredFiles(); setupCompiler(port, protocol); runDevServer(port, protocol); }