-
-
Notifications
You must be signed in to change notification settings - Fork 197
tns run android --bundle
doesn't pause on webpack compilation error
#3785
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
This happens on ios with webpack as well. Here is a repository that reproduces the error: https://github.com/resideo-platform/exemplar/ You can introduce a syntax error into the typescript.
|
tns run android --bundle
doesn't exit on webpack compilation error tns run android --bundle
doesn't pause on webpack compilation error
I've updated the issue title as the CLI should pause on Webpack error instead of exiting the process. The user should be able to fix this error and the CLI should continue with a native build or a LiveSync. |
Webpack doesn't notify NativeScript CLI when there is a compilation error. So, NativeScript CLI build the app, install it on device and start it. In most cases the application crashes runtime as the webpack compilcation is not successful. Most probably there would be a red/yellow message in the console printed during the compilation. The users don't see the error message as there is too much log outputed in the console. They don't understand the exact reason why their app crashes runtime. Webpack has a mechanism to skip the emitting phase whenever there are errors while compiling. This can be achieved using `optimization.noEmitOnErrors` property as it is described [here](https://webpack.js.org/configuration/optimization/#optimizationnoemitonerrors). This PR adds `noEmitOnErrors` property in all webpack.config files: * The default value is based on `noEmitOnError` property from `tsconfig.json` for `angular` and `typescript` projects * The default value is `true` for `javascript` and `vue` projects. Also this PR fixes the following problems: 1. Check for syntactic errors when running webpack compilation in ts projects Currently `ts-loader` is started in `transpileOnly` mode and webpack plugin (`ForkTsCheckerWebpackPlugin`) runs TypeScript type checker on a separate process in order to report for compilation errors. By default the plugin only checks for semantic errors and adds them to `compilation.errors` as can be seen [here](). On the other side, webpack relies on [compilation.errors]() array when deciding if should skip emitting phase. However, `ts-loader` used in `transpileOnly` mode still reports syntactic errors but adds them to `compilation.warnings`. This is a problem, as actually the compilation is not stopped when there is a syntactic error. Setting `checkSyntacticErrors: true` will ensure that `ForkTsCheckerWebpackPlugin` will check for both syntactic and semantic errors and after that will be added to `compilation.errors`. 2. Respect `noEmitOnError` from `tsconfig.json` when compiling in `ts` projects The problem is in `ForkTsCheckerWebpackPlugin` and in the way it is integrated with webpack hooks - TypeStrong/fork-ts-checker-webpack-plugin#337. 3. Send the hash of compilation to NativeScript CLI The `hmr` generates new hot-update files on every change and the hash of the next hmr update is written inside hot-update.json file. Although webpack doesn't emit any files, hmr hash is still generated. The hash is generated per compilation no matter if files will be emitted or not. This way, the first successful compilation after fixing the compilation error generates a hash that is not the same as the one expected in the latest emitted hot-update.json file. As a result, the hmr chain is broken and the changes are not applied. Rel to: NativeScript/nativescript-cli#3785
More info can be found here NativeScript/nativescript-dev-webpack#1051. Rel to: #3785
More info can be found here NativeScript/nativescript-dev-webpack#1051. Rel to: #3785
More info can be found here NativeScript/nativescript-dev-webpack#1051. Rel to: #3785
Acceptance criteria:
known limitation:
|
We have the following limitations due to the fact that errors are processed in a different manner from webpack's loaders/plugins:
|
We have a limitation that webpack compilation doesn't stop on error in typescript applications. That was due to the issue in fork-ts-checker-webpack-plugin. After merging [the PR that fixes the issue](TypeStrong/fork-ts-checker-webpack-plugin#337) and releasing 2.0.0 version of the plugin, we can update it on our side and that way webpack compilation will stop on syntax/semantic errors within the application. Rel to: NativeScript/nativescript-cli#3785
Please, provide the details below:
Tell us about the problem
When you run
tns run android --bundle
and the webpack compilation fails, the CLI continues with native build, installing the app, etc. It should fail instead.Which platform(s) does your issue occur on?
I tested it only on Android.
Please provide the following version numbers that your issue occurs with:
Please tell us how to recreate the issue in as much detail as possible.
Using the attached project:
Is there code involved? If so, please share the minimal amount of code needed to
The attached project has an invalid require.
jsapp.tar.gz
The text was updated successfully, but these errors were encountered: