<?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: quincarter</title>
    <description>The latest articles on DEV Community by quincarter (@quincarter).</description>
    <link>https://dev.to/quincarter</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%2F1141980%2F7ecae549-7fbc-4f51-b471-4bc1f66180ff.jpeg</url>
      <title>DEV Community: quincarter</title>
      <link>https://dev.to/quincarter</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/quincarter"/>
    <language>en</language>
    <item>
      <title>Nx 17 Upgrade Errors - Cannot Use Import outside a Module</title>
      <dc:creator>quincarter</dc:creator>
      <pubDate>Thu, 26 Oct 2023 02:20:34 +0000</pubDate>
      <link>https://dev.to/quincarter/nx-17-upgrade-errors-cannot-use-import-outside-a-module-1ea8</link>
      <guid>https://dev.to/quincarter/nx-17-upgrade-errors-cannot-use-import-outside-a-module-1ea8</guid>
      <description>&lt;h2&gt;
  
  
  Upgrading Nx
&lt;/h2&gt;

&lt;p&gt;The team over at Nx has made it super easy to upgrade your monorepo with a single line command that stages any package migrations for you, and let's you see all changes on a working tree. This approach is very nice if you are in a larger project and want to upgrade 1 or 2 major versions (my project was on Nx 15 and I moved to Nx 17).&lt;/p&gt;

&lt;p&gt;In order to upgrade your monorepo, you can run this command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nx migrate &amp;lt;version&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or if you want to migrate all the way to latest (at your own risk) then you can just throw your hands up and run this command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nx migrate latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once that is done, it will show you a message kind of like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fc66baefl2rwxcbcvws0x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fc66baefl2rwxcbcvws0x.png" alt="Migration success"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then you will want to rerun &lt;code&gt;yarn&lt;/code&gt; or &lt;code&gt;npm i&lt;/code&gt; or whatever you prefer to install the latest packages, then run&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nx migrate &lt;span class="nt"&gt;--run-migrations&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If everything goes to their plan, your migration will be successful and you can move on!&lt;br&gt;
&lt;a href="https://media.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%2Fribzwnxw04qyli5o76vs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fribzwnxw04qyli5o76vs.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have any sort of local generators configured via plug-ins with Nx, then read on. &lt;/p&gt;
&lt;h2&gt;
  
  
  Cannot use import outside a module
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.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%2F4zo33af6uvb7txwoqsp7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F4zo33af6uvb7txwoqsp7.png" alt="Error received when running workspace-generators"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ah so this error is one that I dealt with for quite a while. There's a few github issues for this, but the one I participated in the most was &lt;a href="https://github.com/nrwl/nx/issues/19519" rel="noopener noreferrer"&gt;this one&lt;/a&gt;. &lt;/p&gt;
&lt;h3&gt;
  
  
  The Problem
&lt;/h3&gt;

&lt;p&gt;There is a package that gets updated with the nrwl/nx migrations called &lt;code&gt;@swc-node/register&lt;/code&gt; any version in the &lt;code&gt;1.5.x&lt;/code&gt; range and the &lt;code&gt;1.6.x&lt;/code&gt; range breaks something inside of the nx internals that I haven't quite figured out why it happened. &lt;code&gt;1.5.x&lt;/code&gt; throws a completely different error than &lt;code&gt;1.6.x&lt;/code&gt; and &lt;code&gt;1.6.x&lt;/code&gt; just hard fails with the error above, &lt;code&gt;1.5.x&lt;/code&gt; throws an error like this:&lt;br&gt;
&lt;a href="https://media.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%2Fx84igrfnlmdwgikq7nih.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fx84igrfnlmdwgikq7nih.png" alt="@swc-node/register error on 1.5.x"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  The Solution (As of right now October 25, 2023)
&lt;/h3&gt;

&lt;p&gt;Install an earlier version of &lt;code&gt;@swc-node/register&lt;/code&gt; to make their generators work (at the time of writing this article). &lt;/p&gt;

&lt;p&gt;With Yarn:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;yarn add &lt;span class="nt"&gt;-D&lt;/span&gt; @swc-node/register@1.4.2 &lt;span class="nt"&gt;-W&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With Npm:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm i &lt;span class="nt"&gt;-D&lt;/span&gt; @swc-node/register@1.4.2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Note:
&lt;/h3&gt;

&lt;p&gt;Installing &lt;code&gt;@swc-node/register@1.4.2&lt;/code&gt; with &lt;code&gt;NPM&lt;/code&gt; requires &lt;code&gt;--force&lt;/code&gt; because of peerDependency conflicts:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/nrwl/nx/issues/19519#issuecomment-1780602628" rel="noopener noreferrer"&gt;See here&lt;/a&gt; for more.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;myngapp git:&lt;span class="o"&gt;(&lt;/span&gt;nx-16-10-0&lt;span class="o"&gt;)&lt;/span&gt; ✗ npm i &lt;span class="nt"&gt;--force&lt;/span&gt;
npm WARN using &lt;span class="nt"&gt;--force&lt;/span&gt; Recommended protections disabled.
npm WARN ERESOLVE overriding peer dependency
npm WARN While resolving: nx@16.10.0
npm WARN Found: @swc-node/register@1.4.2
npm WARN node_modules/@swc-node/register
npm WARN   dev @swc-node/register@&lt;span class="s2"&gt;"1.4.2"&lt;/span&gt; from the root project
npm WARN 
npm WARN Could not resolve dependency:
npm WARN peerOptional @swc-node/register@&lt;span class="s2"&gt;"^1.6.7"&lt;/span&gt; from nx@16.10.0
npm WARN node_modules/nx
npm WARN   dev nx@&lt;span class="s2"&gt;"16.10.0"&lt;/span&gt; from the root project
npm WARN   3 more &lt;span class="o"&gt;(&lt;/span&gt;@nx/devkit, @nx/workspace, @nrwl/tao&lt;span class="o"&gt;)&lt;/span&gt;
npm WARN 
npm WARN Conflicting peer dependency: @swc-node/register@1.6.8
npm WARN node_modules/@swc-node/register
npm WARN   peerOptional @swc-node/register@&lt;span class="s2"&gt;"^1.6.7"&lt;/span&gt; from nx@16.10.0
npm WARN   node_modules/nx
npm WARN     dev nx@&lt;span class="s2"&gt;"16.10.0"&lt;/span&gt; from the root project
npm WARN     3 more &lt;span class="o"&gt;(&lt;/span&gt;@nx/devkit, @nx/workspace, @nrwl/tao&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run your generators and you should be greeted with a happy response now. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fct0g0rtq9q41h031gqxz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fct0g0rtq9q41h031gqxz.png" alt="Nx Generator Success"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>nx</category>
      <category>typescript</category>
      <category>library</category>
      <category>nrwl</category>
    </item>
  </channel>
</rss>
