From be4500039877b41928beefb049fb8305d165107e Mon Sep 17 00:00:00 2001 From: Miguel Veloso Date: Tue, 12 Mar 2019 12:31:36 +0000 Subject: [PATCH] Update SPA setup article to current situation --- 06.-Setting-the-Web-SPA-application-up.md | 117 ++++++++++++---------- img/spa/add-client-redirect-uri.png | Bin 0 -> 39599 bytes img/spa/ssms-login.png | Bin 0 -> 10231 bytes 3 files changed, 66 insertions(+), 51 deletions(-) create mode 100644 img/spa/add-client-redirect-uri.png create mode 100644 img/spa/ssms-login.png diff --git a/06.-Setting-the-Web-SPA-application-up.md b/06.-Setting-the-Web-SPA-application-up.md index f5438c7..044fd0f 100644 --- a/06.-Setting-the-Web-SPA-application-up.md +++ b/06.-Setting-the-Web-SPA-application-up.md @@ -1,83 +1,98 @@ -The Web SPA application needs a few additional steps to make it work due to its JavaScript frameworks dependencies and JS code to be built before generating the Docker Images. +## Important notice + +The Web SPA application currently builds just fine while building the Docker images with docker-compose. + +You only need to go through this article if you want to run it locally with Visual Studio, to build the required JavaScript code and dependencies. ## Requirements and set up - ### Install NPM -In order to be able to build the JavaScript dependencies from command line by using npm you need to install npm globally. -NPM is bundled with NODE.JS. Installing NPM and NODE is pretty straightforward by using the installer package available at https://nodejs.org/en/ +You need to use **npm** from the command line to build the JS application, so it has to be installed globally. - -You can install the version "Recommended For Most Users" of Node. -You can see the installed NPM version with the command npm -v, as shown below. -

- +**NPM** is bundled with NODE.JS, and Installing NODE and NPM is pretty straightforward by using the installer package available at https://nodejs.org/en/ + +![](img/spa/installing_npm_node.png) + +You can install the Long Term Support (LTS) version "Recommended For Most Users" of Node, however, the current version used in the WebSPA application is [8.11](https://nodejs.org/download/release/v8.11.4/). + +You can also see the installed NPM version with the command `npm -v`, as shown below. + +![](img/spa/npm-versions-powershell.png) ### Set NPM path into Visual Studio + This step is only required if you are also using the full Visual Studio 2017. + NPM (just installed by you) will be usually installed under this path: -C:\Program Files\nodejs. -You need to update that path in Visual Studio under the "External Web Tools" location paths, as shown below: -

- +**C:\Program Files\nodejs**. + +You might to update that path in Visual Studio under the "External Web Tools" location paths, as shown below: + +![](img/spa/vs-tools-path-custom-node.png) + If you don't do this step you might have issues because of using different versions from VS versus the command line accessing the same JavaScript code from both environments. See: http://www.hanselman.com/blog/VisualStudio2015FixingDependenciesNpmNotInstalledFromFseventsWithNodeOnWindows.aspx - ### Build the SPA app with NPM -Now, you need to build the SPA app (TypeScript and Angular 4 based client app) with NPM. -* Open a command-prompt window and move to the root of the SPA application (src\Web\WebSPA\) -* Run the command npm install as shown below: - ---------------- +Now, you need to build the SPA app (TypeScript and Angular 6+ based client app) with NPM. -**IMPORTANT NOTE/UPDATE:** Seems like in some NPM environments running just "npm install" does not work properly. If you have a similar issue than [this issue](https://github.com/dotnet-architecture/eShopOnContainers/issues/253): try running **"npm install enhanced-resolve@3.3.0"** instead "npm install". (Please, provide your experience at that mentioned issue) +- Open a command-prompt window and move to the root of the SPA application (src\Web\WebSPA\) ---------------- +- Run the command `npm install` as shown below: -* Then, run the command npm run build:prod as shown below: - + ![](img/spa/npm-install.png) -* If you get an error like "Node Sass could not find a binding for your current environment: Windows 64-bit with Node.js 6.x", then run the command npm rebuild node-sass as in the following screenshot: + **IMPORTANT NOTE/UPDATE:** Seems like in some NPM environments running just "npm install" does not work properly. If you have a similar issue than [this issue](https://github.com/dotnet-architecture/eShopOnContainers/issues/253): try running **"npm install enhanced-resolve@3.3.0"** instead "npm install". (Please, provide your experience at that mentioned issue) - +- Then, run the command `npm run build:prod` as shown below: - Then, run again the npm run build:prod command that should finish with no errors. + ![](img/spa/npm-run-build-prod.png) - +- If you get an error like **"Node Sass could not find a binding for your current environment: Windows 64-bit with Node.js 6.x"**, then run the command `npm rebuild node-sass` as in the following screenshot: -#### (Optional) Run NPM tasks from within Visual Studio 2017 + ![](img/spa/npm-rebuild-node-sass.png) + + Then, run again the `npm run build:prod` command that should finish with no errors. + + ![](img/spa/npm-run-build-prod-no-errors.png) + +### Run the SPA locally + +To run the SPA locally you have to set the WebSPA as the startup project for the solution, and then press [F5] or [Ctrl+F5] as usual. + +The SPA application should start in port 58018, but `localhost:58018` is not in one of the authorized client redirections in `Identity.API`, so this address has to be added manually. + +The easiest is to just edit the database proper table and add the required record. + +If using SQL Server Management Studio do the following: + +1. Connect to `localhost, 5433` with username `sa` and password `Pass@word` + + ![](img/spa/ssms-login.png) + +2. Find the table `dbo.ClientRedrectUris` in the `IdentityDb` database and add a new record like the one that contains `http://localhost:5104`, but with the `http://localhost:58018` as shown in the next image: + + ![](img/spa/add-client-redirect-uri.png) + +### (Optional) Run NPM tasks from within Visual Studio 2017 + +As the chosen workload method when developing a client frontend app (JS frameworks, etc.), you, as a developer have to be able to trigger the npm tasks when you want. + +Of course, you can always open a command prompt and run npm from the CLI as you just did in the steps above (which is, in fact, what most front-end developers do). -As the chosen workload method when developing a client frontend app (JS frameworks, etc.), the developer has to be able to trigger the npm tasks when he wants. -Of course, he can always open a command propmt and run npm from the CLI as you just did in the steps above (which is most front-end devs do, in fact). However, you can also run npm tasks inside Visual Studio if you install the following VS extension: https://marketplace.visualstudio.com/items?itemName=MadsKristensen.NPMTaskRunner -This extension adds to the "Task Runner Explorer" the capabailities to run npm tasks (since, out of the box, only gulp/grunt tasks are supported by VS2017). After this extension is installed you can run npm tasks from inside VS2017 and also set build bindings if you wanted. +This extension adds the option to run npm tasks from the "Task Runner Explorer" (since, out of the box, only gulp/grunt tasks are supported by VS2017). After this extension is installed you can run npm tasks from inside VS2017 and also set build bindings if you want. - +![](img/spa/task-runner-with-npm-extension.png) This extension honors the VS External Web Tools configuration, and allows you to use bindings, so if you want to run npm tasks automatically on every VS build, you could do so. This is not set as default in the eShopOnContainers provided code as it would slow down each VS build with the npm build tasks. -### Build the Docker images and Deploy the containers -At this point, if you were originally following the eShopOnContainer setup for any environment and came to this page just to setup the SPA app, now go back to your original setup instructions page. Other than that, you can in any case choose between any of the following options to build and deploy the Docker containers: - -1. **VS 2017 based:** Build and deploy in a single step from Visual Studio 2017 as explained in this page: https://github.com/dotnet/eShopOnContainers/wiki/02.-Setting-eShopOnContainer-solution-up-in-a-Visual-Studio-2017-environment - -2. **CLI on Windows:** Build the .NET bits with the build-container based on dontnet CLI and Docker CLI, as explained in this page: https://github.com/dotnet/eShopOnContainers/wiki/03.-Setting-the-eShopOnContainers-solution-up-in-a-Windows-CLI-environment-(dotnet-CLI,-Docker-CLI-and-VS-Code) - -3. **CLI on Mac:** Build the .NET bits with the build-container based on dontnet CLI and Docker CLI, as explained in this page: https://github.com/dotnet/eShopOnContainers/wiki/04.-Setting-eShopOnContainer-solution-up-in-a-Mac,-VS-Code-and-CLI-environment--(dotnet-CLI,-Docker-CLI-and-VS-Code) - -## Troubleshooting the SPA app when building from the CLI - -The Docker image build could do npm install if needed, but this installs npm linux packages, not the windows ones. As the docker container used for build has a volume mapping with the source code, that means that the "node_modules" of the SPA web application ends having npm linux modules. In fact, windows & linux modules are the same (they’re node modules, so are in js) but windows modules have an additional .cmd file in the node_modules\.bin folder. This file is needed for all CLI-invokable modules (like webpack or rimraf). As linux modules do no have it, **if you build once with the docker image, and later do you want to build using the windows CLI you will get errors due to not having these files. Solution here is delete the "node_modules" folder and do an npm install (from Windows)**. - -How to avoid having this issue?: doing an "npm install" from Windows BEFORE running the docker CI build, as documented here: https://github.com/dotnet/eShopOnContainers/wiki/03.-Setting-the-eShopOnContainers-solution-up-in-a-Windows-CLI-environment-(dotnet-CLI,-Docker-CLI-and-VS-Code) - -Everytime you change from Linux based build (Docker) to a Windows based build (CLI) you’ll need to do “npm rebuild node-sass”. Our Docker compose ci.build file does it for you, but if you switch to windows, you’ll need to do it manually. - ## Sending feedback and pull requests -We'd appreciate to your feedback, improvements and ideas. -You can create new issues at the issues section, do pull requests and/or send emails to eshop_feedback@service.microsoft.com + +We'd appreciate your feedback, improvements and ideas. + +You can create new [issues](https://github.com/dotnet-architecture/eShopOnContainers/issues) or [pull requests](https://github.com/dotnet-architecture/eShopOnContainers/pulls) in this repo or send emails to [eshop_feedback@service.microsoft.com](mailto:eshop_feedback@service.microsoft.com) diff --git a/img/spa/add-client-redirect-uri.png b/img/spa/add-client-redirect-uri.png new file mode 100644 index 0000000000000000000000000000000000000000..c07a59325d5c9db84a64a4ceb493df5972affbb0 GIT binary patch literal 39599 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 literal 0 HcmV?d00001