<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Aidan</title>
    <description>The latest articles on DEV Community by Aidan (@trantn).</description>
    <link>https://dev.to/trantn</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1280344%2F48eb0e2b-faa3-4d36-9719-8edd714b0511.jpeg</url>
      <title>DEV Community: Aidan</title>
      <link>https://dev.to/trantn</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/trantn"/>
    <language>en</language>
    <item>
      <title>Why Developers Should Try Warp: The Terminal That Boosts Your Productivity</title>
      <dc:creator>Aidan</dc:creator>
      <pubDate>Fri, 20 Dec 2024 23:05:05 +0000</pubDate>
      <link>https://dev.to/trantn/why-developers-should-try-warp-the-terminal-that-boosts-your-productivity-8i9</link>
      <guid>https://dev.to/trantn/why-developers-should-try-warp-the-terminal-that-boosts-your-productivity-8i9</guid>
      <description>&lt;h1&gt;
  
  
  Introducing Warp Terminal
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://www.warp.dev/" rel="noopener noreferrer"&gt;https://www.warp.dev/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Warp&lt;/strong&gt; is a modern terminal designed to enhance the command-line experience. With a user-friendly interface, outstanding features, and performance boosts, Warp brings a fresh perspective to developers, especially those who frequently work with terminals. Here's what makes Warp a standout choice.&lt;/p&gt;




&lt;h2&gt;
  
  
  Key Features of Warp
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🚀 &lt;strong&gt;Modern and User-Friendly Interface&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Warp is not only visually appealing but also highly intuitive. It offers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Command Blocks:&lt;/strong&gt; Each command's output is neatly encapsulated in its own block, making it easier to manage and review.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Advanced Search:&lt;/strong&gt; Quickly search through command history and output.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ⚡ &lt;strong&gt;Productivity Tools&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Warp empowers you to work smarter with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Intelligent Autocomplete:&lt;/strong&gt; Real-time suggestions for commands and arguments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sharable Snippets:&lt;/strong&gt; Save and share useful command snippets with your team.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Built-in Editor:&lt;/strong&gt; Edit files or configurations directly in the terminal without switching apps.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🤝 &lt;strong&gt;Robust Collaboration Support&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;One of Warp's standout features is its collaboration capabilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live Collaboration:&lt;/strong&gt; Share terminal sessions live with teammates.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Command Annotations:&lt;/strong&gt; Document your steps to easily share knowledge.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🧠 &lt;strong&gt;AI Integration&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Warp leverages AI to enhance user experience with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AI Command Suggestions:&lt;/strong&gt; Automatically suggests relevant commands based on context and history.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Error Explanations:&lt;/strong&gt; Analyzes and explains command errors for quick troubleshooting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI-Powered Documentation:&lt;/strong&gt; Enables you to search for documentation and get command explanations directly in the terminal.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🔗 &lt;strong&gt;Integration with Modern Tools&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Warp offers built-in support for popular tools and platforms like Git, Docker, Kubernetes, AWS, and GCP, eliminating the need for complex setups.&lt;/p&gt;

&lt;h3&gt;
  
  
  🛡️ &lt;strong&gt;High Performance and Security&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Written in Rust, Warp delivers exceptional performance. It also ensures security for sensitive data with encryption and robust protection mechanisms.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Use Warp Terminal?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ✅ &lt;strong&gt;Boost Productivity&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Warp helps you get work done faster with features like autocomplete, efficient search, and organized command history. Command Blocks ensure you never lose track of important outputs.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✅ &lt;strong&gt;Easy to Learn and Use&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Even for those new to terminals, Warp provides an accessible experience with its intuitive interface and smart assistance features. Sharable snippets make it easier to learn from teammates.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✅ &lt;strong&gt;Better Team Collaboration&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;For those who work in teams, Warp’s live collaboration and session-sharing features are excellent tools for discussion and problem-solving.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✅ &lt;strong&gt;Built for Modern Developers&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;With integrations for DevOps and cloud tools, Warp is not just a terminal but a productivity hub for modern developers.&lt;/p&gt;

&lt;h3&gt;
  
  
  ✅ &lt;strong&gt;Foster Creativity and Exploration&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Warp encourages you to discover new commands through suggestions and advanced features, saving time and expanding your knowledge.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Warp Terminal is a game-changer for developers seeking a modern, efficient, and user-friendly command-line tool. With features like Command Blocks, intelligent autocomplete, AI integration, and collaboration tools, Warp is more than just a terminal—it's a productivity companion for your daily tasks.&lt;/p&gt;

&lt;p&gt;🌟 &lt;strong&gt;Try Warp Terminal now and experience the difference!&lt;/strong&gt; 🌟&lt;/p&gt;

</description>
    </item>
    <item>
      <title>What is the Commit line? How to use commit line for project</title>
      <dc:creator>Aidan</dc:creator>
      <pubDate>Tue, 03 Dec 2024 03:17:32 +0000</pubDate>
      <link>https://dev.to/trantn/what-is-the-commit-line-how-to-use-commit-line-for-project-1n6k</link>
      <guid>https://dev.to/trantn/what-is-the-commit-line-how-to-use-commit-line-for-project-1n6k</guid>
      <description>&lt;p&gt;&lt;strong&gt;What is a Commit Line?&lt;/strong&gt;&lt;br&gt;
A commit line is a concise message you provide when making a commit in version control systems like Git. It explains the purpose or the changes introduced in the commit.&lt;/p&gt;

&lt;p&gt;A good commit line should be short, precise, and easy to understand, allowing anyone in the project to grasp the essence of the changes.&lt;/p&gt;

&lt;p&gt;Use a standardized syntax (Conventional Commits): Adopt prefixes to categorize the type of commit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"options": [
        {
          "label": "---",
          "value": ""
        },
        {
          "label": "build",
          "description": "Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)"
        },
        {
          "label": "chore",
          "description": "Updating grunt tasks etc; no production code change"
        },
        {
          "label": "ci",
          "description": "Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs)"
        },
        {
          "label": "docs",
          "description": "Documentation only changes"
        },
        {
          "label": "feat",
          "description": "A new feature"
        },
        {
          "label": "fix",
          "description": "A bug fix"
        },
        {
          "label": "perf",
          "description": "A code change that improves performance"
        },
        {
          "label": "refactor",
          "description": "A code change that neither fixes a bug nor adds a feature"
        },
        {
          "label": "revert"
        },
        {
          "label": "style",
          "description": "Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)"
        },
        {
          "label": "test",
          "description": "Adding missing tests or correcting existing tests"
        }
      ],
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When you run git change log it will look like below&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0s8vkz2sww1ie80ax920.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0s8vkz2sww1ie80ax920.png" alt=" " width="800" height="551"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to use commit line for project&lt;/strong&gt;&lt;br&gt;
We hope that when committing in the wrong format, an error message will be reported&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjoqlyy1l977dnx1trv97.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjoqlyy1l977dnx1trv97.png" alt=" " width="669" height="510"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Package needs to be installed&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yarn add -D @commitlint/cli
yarn add -D @commitlint/config-conventional
yarn add -D @commitlint/load
yarn add -D husky
yarn add -D lint-staged
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You need commit link reference &lt;br&gt;
&lt;a href="https://bitbucket.org/main-28/commitline/commits/7fb8faaf2ed576fca80007bf099fe85f526e5605" rel="noopener noreferrer"&gt;https://bitbucket.org/main-28/commitline/commits/7fb8faaf2ed576fca80007bf099fe85f526e5605&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Full source code:&lt;br&gt;
&lt;a href="https://bitbucket.org/main-28/commitline/src/main/" rel="noopener noreferrer"&gt;https://bitbucket.org/main-28/commitline/src/main/&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Prevent email spam from developers during application development</title>
      <dc:creator>Aidan</dc:creator>
      <pubDate>Fri, 23 Aug 2024 01:29:44 +0000</pubDate>
      <link>https://dev.to/trantn/prevent-email-spam-from-developers-during-application-development-pbp</link>
      <guid>https://dev.to/trantn/prevent-email-spam-from-developers-during-application-development-pbp</guid>
      <description>&lt;p&gt;hi everybody!&lt;/p&gt;

&lt;p&gt;Today I share some issues I have encountered, it isn't very pleasant&lt;/p&gt;

&lt;p&gt;The issue: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When clicking submit, the screen of new employees will call send mail to list users has the role admin and manager. I'm a newbie joining a project, i run the project at my local and test this screen&lt;/li&gt;
&lt;li&gt;So...., that day, everyone who has participated in the project, current team members and members who have moved to other projects, and members who have left. They received a lot of emails from my testing activities because I cloned the database from the development environment to my local and the database already had their information.&lt;/li&gt;
&lt;li&gt;Everyone sympathized with my actions. But I think I need to improve more&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;so I will introduce to everyone this great tool &lt;a href="https://mailtrap.io/" rel="noopener noreferrer"&gt;mailtrap&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mailtrap working&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flbnsggs03cwq2aryrks8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flbnsggs03cwq2aryrks8.png" alt=" " width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My Inbox:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fno70x6rgmk2qxrhxrxgu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fno70x6rgmk2qxrhxrxgu.png" alt=" " width="800" height="213"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;SMTP info&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fioge8v11iw9iclf0kroi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fioge8v11iw9iclf0kroi.png" alt=" " width="709" height="785"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Test send email with SMTP&lt;br&gt;
&lt;a href="https://www.gmass.co/smtp-test" rel="noopener noreferrer"&gt;https://www.gmass.co/smtp-test&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F42i9baliebzog0axivbf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F42i9baliebzog0axivbf.png" alt=" " width="800" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You check Demo Inbox Mailtrap WOA :D&lt;br&gt;
Email header info consit from, to, ...&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm84k5iv5q7p91gdmhd5e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm84k5iv5q7p91gdmhd5e.png" alt=" " width="800" height="275"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With mailtrap i can test this screen :D&lt;/p&gt;

</description>
      <category>mail</category>
      <category>typescript</category>
      <category>spam</category>
      <category>development</category>
    </item>
    <item>
      <title>How to define class name with color code</title>
      <dc:creator>Aidan</dc:creator>
      <pubDate>Mon, 05 Aug 2024 06:48:21 +0000</pubDate>
      <link>https://dev.to/trantn/how-to-define-class-name-with-color-code-53k0</link>
      <guid>https://dev.to/trantn/how-to-define-class-name-with-color-code-53k0</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs1bot2iptr5s0ygs6xk7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs1bot2iptr5s0ygs6xk7.png" alt=" " width="800" height="522"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I used to be quite confused when naming elements by color code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example issues:&lt;/strong&gt;&lt;br&gt;
This panel default has a background white&lt;br&gt;
&lt;code&gt;&amp;lt;div class="panel"&amp;gt;default&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This panel default has a background #757575&lt;br&gt;
&lt;code&gt;&amp;lt;div class="panel panel__???"&amp;gt;#757575&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This panel default has a background #cdcdcd&lt;br&gt;
&lt;code&gt;&amp;lt;div class="panel panel__???"&amp;gt;#cdcdcd&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;OMG! How do I name panel__??? class elements&lt;/p&gt;




&lt;p&gt;I recommend &lt;a href="https://colors.artyclick.com/color-name-finder/" rel="noopener noreferrer"&gt;https://colors.artyclick.com/color-name-finder/&lt;/a&gt; it solves naming&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This case:&lt;/strong&gt;&lt;br&gt;
This panel default has a background #757575&lt;br&gt;
&lt;code&gt;&amp;lt;div class="panel panel__???"&amp;gt;#757575&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Solved:&lt;br&gt;
you can reference Name or Similar names&lt;br&gt;
results&lt;br&gt;
&lt;code&gt;&amp;lt;div class="panel panel__boulder"&amp;gt;#757575&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs4rtodbff5liv2z6mpe7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs4rtodbff5liv2z6mpe7.png" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Link:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://colors.artyclick.com/color-name-finder/" rel="noopener noreferrer"&gt;https://colors.artyclick.com/color-name-finder/&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Authentication opens a new window popup with postMessage</title>
      <dc:creator>Aidan</dc:creator>
      <pubDate>Fri, 10 May 2024 09:05:51 +0000</pubDate>
      <link>https://dev.to/trantn/authentication-opens-a-new-window-popup-with-postmessage-dmi</link>
      <guid>https://dev.to/trantn/authentication-opens-a-new-window-popup-with-postmessage-dmi</guid>
      <description>&lt;p&gt;&lt;strong&gt;Diagram:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fij1j8ysmf71vx7hd6340.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fij1j8ysmf71vx7hd6340.jpg" alt=" " width="800" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you have a large system with many services, each service is responsible for a specific task, and there is an authentication service that provides authentication for many [app client] applications in use, then you will be interested in postMessage or Single sign-on solutions.&lt;/p&gt;

&lt;p&gt;This article will focus on postMessage&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution 1: postMessage with iframe&lt;/strong&gt;&lt;br&gt;
Page parents use HTML tag iframe to load the child page.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Demo&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Page parent sends a message to page child via iframe
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5mxmruhy3yvqsxltezol.png" alt=" " width="444" height="511"&gt;
&lt;/li&gt;
&lt;li&gt;Page child sends a message to page parent via iframe
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbooh0hf58zcqsftlkj51.png" alt=" " width="403" height="519"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Solution 2: postMessage with new window popup&lt;/strong&gt;&lt;br&gt;
Page login on [app client] call open new window load page login of service [A], service [A] login success send message container token data to go back [app client]&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Demo&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Open a new window&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4vf14az3zin6qu9fpr1f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4vf14az3zin6qu9fpr1f.png" alt=" " width="800" height="433"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click the button [Login success]: Send message go back [app client]&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4f98z229lgcpj2nk3vff.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4f98z229lgcpj2nk3vff.png" alt=" " width="605" height="270"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Repo: &lt;a href="https://bitbucket.org/main-28/authencation-with-window-open/src/main/" rel="noopener noreferrer"&gt;https://bitbucket.org/main-28/authencation-with-window-open/src/main/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Install the package with package json &lt;code&gt;npm i&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Run the script locally:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Solution 1(iframe)
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Step 1:
npm run postMessage:iframe1
npm run postMessage:iframe2

Step 2: 
Open http://localhost:8081
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Solution 2(new window)
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Step 1:
npm run postMessage:case2:window1
npm run postMessage:case2:window2

Step 2: 
Open http://localhost:8085
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>javascript</category>
      <category>authentication</category>
      <category>typescript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Migration - Module query with TypeORM version 0.3.x</title>
      <dc:creator>Aidan</dc:creator>
      <pubDate>Wed, 03 Apr 2024 06:21:12 +0000</pubDate>
      <link>https://dev.to/trantn/migration-module-query-with-typeorm-version-03x-2ic2</link>
      <guid>https://dev.to/trantn/migration-module-query-with-typeorm-version-03x-2ic2</guid>
      <description>&lt;p&gt;Hi everyone!!&lt;/p&gt;

&lt;p&gt;I like to use the library TypeORM •ᴗ••ᴗ••ᴗ••ᴗ•&lt;br&gt;
As usual, When stating new project, i typically copy the &lt;code&gt;database modules &amp;amp; config script migration&lt;/code&gt; from the old source. However, with TypeORM version 0.3.x, it doesn't seem to work. ¯_(ツ)&lt;em&gt;/¯ ¯_(ツ)&lt;/em&gt;/¯ ¯_(ツ)_/¯&lt;br&gt;
I have researched and felt confused while applying TypeORM to the project.&lt;/p&gt;

&lt;p&gt;So, I want to share it with everyone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prepare:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;New app with nestjs&lt;br&gt;
Install &lt;code&gt;yarn add mysql2 typeorm @nestjs/typeorm&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;



&lt;p&gt;&lt;strong&gt;Repository&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://bitbucket.org/main-28/typeorm-migration-0.3/src/main/" rel="noopener noreferrer"&gt;https://bitbucket.org/main-28/typeorm-migration-0.3/src/main/&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Setup database module&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.
├── src/
│   ├── database/
│   │   ├── migrations # This folder contains migrate file
│   │   ├── data-source-migration.ts # This file config run migration create, run, ...
│   │   └── database.module.ts # This file config query to database
│   └── app.module.ts
└── package.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;&lt;strong&gt;Config package json file&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"typeorm": "ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli",
"migration:create": "yarn typeorm migration:create ./src/database/migrations/${name}",
"migration:create:window": "yarn typeorm migration:create ./src/database/migrations/%name%",
"migration:run": "yarn typeorm -- --dataSource=./src/database/data-source-migration.ts migration:run",
"migration:revert": "yarn typeorm -- --dataSource=./src/database/data-source-migration.ts migration:revert",
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;&lt;strong&gt;File name format&lt;/strong&gt;&lt;br&gt;
This format would help you and the team quickly understand what someone has edited.&lt;br&gt;
Please provide feedback on this format for me.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- Create: create-{table-name}-table
- Modify &amp;gt; 1: modify-{modify-name}-{table-name}-table
- Modify = 1: add-{field-name}-{table-name}-table
- Modify = 1: update-{field-name}-{table-name}-table
- Modify = 1: delete-{field-name}-{table-name}-table
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;&lt;strong&gt;Short script&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Create table post &lt;code&gt;name=create-post-table yarn migration:create&lt;/code&gt;&lt;br&gt;
Run migration &lt;code&gt;yarn migration:run&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>typescript</category>
      <category>typeorm</category>
      <category>cli</category>
      <category>nestjs</category>
    </item>
    <item>
      <title>Cognito custom flow sign-in sends a confirm code via email</title>
      <dc:creator>Aidan</dc:creator>
      <pubDate>Fri, 29 Mar 2024 08:54:46 +0000</pubDate>
      <link>https://dev.to/trantn/cognito-custom-flow-sign-in-sends-a-confirm-code-via-email-1j12</link>
      <guid>https://dev.to/trantn/cognito-custom-flow-sign-in-sends-a-confirm-code-via-email-1j12</guid>
      <description>&lt;p&gt;Hi every one!!!&lt;/p&gt;

&lt;p&gt;Emotional conversation between boss and employee&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Boss: Do you know about Cognito?
Employee: I know a lot about it so what do you need?
Boss: I need to develop more on the login page about 2fa confirmation codes via email &amp;amp; email only, customers need it urgently.
Employee: I think Cognito has all the support so no need to worry. I talked to my boss about it and assured me that I could do everything.
Boss: Does it take a long time?
Employee: I'm a master at this so it'll be quick.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So then he discovered the flow login feature only supports mfa with TOTP &amp;amp; SMS&lt;/p&gt;

&lt;p&gt;OMGGGGGGG ●█▀█▄ ●█▀█▄ ●█▀█▄ ●█▀█▄&lt;/p&gt;

&lt;p&gt;Please read this article it will help you ＼ʕ •ᴥ•ʔ／&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-challenge.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-challenge.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Flow basic&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fazmayd24wqykjlc517ul.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fazmayd24wqykjlc517ul.jpg" alt=" " width="800" height="670"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prepare:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Cognito create user pool&lt;br&gt;
Create 3 lambda function: 2faDefine.js, 2faCreate.js, 2faVerify.js&lt;/p&gt;
&lt;/blockquote&gt;



&lt;p&gt;&lt;strong&gt;Cognito user pool&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: User pool ID &amp;amp; App client ID&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;1./ Tab User: create user&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fscnt8mjlfy0aq9ecnjf7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fscnt8mjlfy0aq9ecnjf7.png" alt=" " width="800" height="258"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The newly created user has confirmation status is &lt;code&gt;Force change password&lt;/code&gt;, now you need to run the script below to update &lt;code&gt;confirmation status&lt;/code&gt; from &lt;code&gt;Force change password&lt;/code&gt; to &lt;code&gt;Confirmed&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;aws cognito-idp admin-set-user-password --user-pool-id {user pool ID} --username {username} --password {password} --permanent 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2./ Tab Sign-up experience&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2bycxnziel17w2si4ke4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2bycxnziel17w2si4ke4.png" alt=" " width="800" height="363"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Add custom attributes &lt;code&gt;authChallenge&lt;/code&gt;, so after saving it will automatically add the prefix &lt;code&gt;custom:&lt;/code&gt;, ouput &lt;code&gt;custom:authChallenge&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This custom attribute contains a confirmation code and expiration time information when the end user submits a login.&lt;/p&gt;

&lt;p&gt;3./ Tab App integration&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd1lt8w7docw5qsqtao2u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd1lt8w7docw5qsqtao2u.png" alt=" " width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You find &lt;code&gt;App client list&lt;/code&gt;, so click &lt;code&gt;Client your app&lt;/code&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This custom attribute &lt;code&gt;custom:authChallenge&lt;/code&gt; must have read and write permissions.&lt;/p&gt;

&lt;p&gt;Option &lt;code&gt;Authentication flow session duration&lt;/code&gt; has a value equal to the expiration time of the confirm-code.&lt;/p&gt;

&lt;p&gt;Option &lt;code&gt;Authentication flows&lt;/code&gt; has a value &lt;code&gt;ALLOW_ADMIN_USER_PASSWORD_AUTH, ALLOW_CUSTOM_AUTH, ALLOW_REFRESH_TOKEN_AUTH, ALLOW_USER_PASSWORD_AUTH, ALLOW_USER_SRP_AUTH&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;4./ Tab User pool properties&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdgsx127pl15qe8i4kp45.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdgsx127pl15qe8i4kp45.png" alt=" " width="800" height="821"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Add Lambda trigger with trigger type &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Custom authentication&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Custom authentication&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Choose &lt;code&gt;Define auth challenge&lt;/code&gt; mapping to lambda function &lt;code&gt;2faDefine&lt;/code&gt;.&lt;br&gt;
Choose &lt;code&gt;Create auth challenge&lt;/code&gt; mapping to lambda function &lt;code&gt;2faCreate&lt;/code&gt;.&lt;br&gt;
Choose &lt;code&gt;Verify auth challenge response&lt;/code&gt; mapping to lambda function &lt;code&gt;2faVerify&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;strong&gt;Lambda deploy with code&lt;/strong&gt;&lt;br&gt;
1./ Function 2faDefine&lt;br&gt;
&lt;a href="https://bitbucket.org/main-28/cognito-sign-in-confirm-code-via-email/src/main/2faDefine.js" rel="noopener noreferrer"&gt;https://bitbucket.org/main-28/cognito-sign-in-confirm-code-via-email/src/main/2faDefine.js&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2./ Function 2faCreate&lt;br&gt;
&lt;a href="https://bitbucket.org/main-28/cognito-sign-in-confirm-code-via-email/src/main/2faCreate.js" rel="noopener noreferrer"&gt;https://bitbucket.org/main-28/cognito-sign-in-confirm-code-via-email/src/main/2faCreate.js&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tab Configuration &amp;gt; General configuration&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Change value of the option timeout up 5 minute because &lt;code&gt;nodemailer&lt;/code&gt; send email not working.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Tab Configuration &amp;gt; Environment variables&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;CUSTOM_ATTRIBUTES = custom:authChallenge&lt;br&gt;
EMAIL_FROM_ADDRESS = &lt;a href="mailto:xxxxx@xxxxxxxxx.xxx"&gt;xxxxx@xxxxxxxxx.xxx&lt;/a&gt;&lt;br&gt;
USER_POOL_ID = xxxxxxxxx&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;3./ Function 2faVerify&lt;br&gt;
&lt;a href="https://bitbucket.org/main-28/cognito-sign-in-confirm-code-via-email/src/main/2faVerify.js" rel="noopener noreferrer"&gt;https://bitbucket.org/main-28/cognito-sign-in-confirm-code-via-email/src/main/2faVerify.js&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tab Configuration &amp;gt; Environment variables&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;CONFIRM_CODE_TIMEOUT = 15&lt;br&gt;
CUSTOM_ATTRIBUTES = custom:authChallenge&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;&lt;strong&gt;Frontend Angular&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Libary &lt;code&gt;[amazon-cognito-identity-js](https://www.npmjs.com/package/amazon-cognito-identity-js)&lt;/code&gt;, &lt;code&gt;[angular-code-input](https://www.npmjs.com/package/angular-code-input)&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Git: &lt;a href="https://bitbucket.org/main-28/cognito-sign-in-confirm-code-via-email/src/main/login.component.ts" rel="noopener noreferrer"&gt;https://bitbucket.org/main-28/cognito-sign-in-confirm-code-via-email/src/main/login.component.ts&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Form login: when the end user clicks submit, it will call the function &lt;code&gt;onSubmitLogin&lt;/code&gt;.&lt;br&gt;
Form confirm code: when the end user enters the confirm-code, it will call the function &lt;code&gt;onCodeCompleted&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;Note: &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you want to refactor code, make sure the code example works first.&lt;br&gt;
Please comment any issues you encounter and I will try to answer you.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>cognito</category>
      <category>aws</category>
      <category>lambda</category>
      <category>javascript</category>
    </item>
    <item>
      <title>How to fix the error node_modules/node-sass command failed</title>
      <dc:creator>Aidan</dc:creator>
      <pubDate>Fri, 29 Mar 2024 04:14:14 +0000</pubDate>
      <link>https://dev.to/trantn/how-to-fix-the-error-nodemodulesnode-sass-command-failed-3gnb</link>
      <guid>https://dev.to/trantn/how-to-fix-the-error-nodemodulesnode-sass-command-failed-3gnb</guid>
      <description>&lt;p&gt;Hello everyone!&lt;/p&gt;

&lt;p&gt;On a beautiful day,&lt;br&gt;
I up to node the latest version of the project&lt;br&gt;
After checking the package version, api, code, and everything is fine (◍•ᴗ•◍)&lt;/p&gt;

&lt;p&gt;Until I build the assets files scss.......&lt;br&gt;
this is the error ヽ༼ ͠ಠل͜ ಠ ༽ﾉ &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4av1wrefgba10fka1mcy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4av1wrefgba10fka1mcy.png" alt=" " width="800" height="327"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AI suggested this and it works, if you are having this problem, try it&lt;br&gt;
Trust AI, trust me, trust us&lt;br&gt;
･°˖✧◝(⁰▿⁰)◜✧˖°.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The error message suggests that there's a problem with the node-sass module during the npm install process. &lt;br&gt;
Specifically, it seems to be related to the build process failing with error code 1. &lt;br&gt;
This issue is often caused by using a version of node-sass that is not compatible with the version of Node.js being used.&lt;/p&gt;

&lt;p&gt;To resolve this issue, you can try the following steps:&lt;br&gt;
&lt;/p&gt;


&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- Delete the node_modules directory and the package-lock.json file in your project.
- Run npm cache clean --force to clear the npm cache.
- Upgrade node-sass to the latest version by running npm install node-sass@latest.
- Run npm install again to reinstall your project's dependencies.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;If the issue persists, you can try uninstalling node-sass and using the sass module instead, which is a drop-in replacement for node-sass. &lt;/p&gt;

&lt;p&gt;To do this, run the following commands:&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm uninstall node-sass
npm install sass
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>nestjs</category>
      <category>sass</category>
      <category>scss</category>
    </item>
  </channel>
</rss>
