Node module update issue

#1

Hi
I'm trying to update node-red-node-email from Node-red's manage pallete section, but it throws error that the module is not installed locally.
So after reading forums I found out that I need to see where my module is initially installed and for that I ran the command npm ls -g node-red-node-email which returned the following result:

Screenshot%20from%202018-09-03%2012-01-30

However, when I install the module globally (as per forums instructions) with the command sudo npm ls -g node-red-node-email and re-run the npm ls -g node-red-node-email command, so the hierarchy ends up like this:

/usr/lib
β”œβ”€β”¬ node-red@0.19.2
β”‚ └── node-red-node-email@0.1.29 
└── node-red-node-email@1.0.1 

So, my question is, why do I end up with two different instances of same module? and where exactly is ver 1.0.1 residing?

Also, how can I fix this? (preferably by removing the old version)

Thanks

0 Likes

#2

Just answered this in another thread

It is a good idea to read the install notes for a node - see the last line.

Install

Version 0.x of this node is usually installed by default by Node-RED. To install version 1.x you need to uninstall the existing version.

    sudo npm uninstall -g node-red-node-email

Then run the following command in your Node-RED user directory - typically ~/.node-red

    npm i node-red-node-email

Note : this installs the new version locally rather than globally. This can then be managed by the palette manager.

0 Likes

#3

Uninstalling the module with the command leaves back to the following state:

Screenshot%20from%202018-09-03%2012-01-30

Seems like the command only removes node-red-node-email@1.0.1, though node-red-node-email@0.1.29 module is still present.

0 Likes

#4

that’s the version of Node-RED (0.19.2) not any email node

0 Likes

#5

my bad, I fixed the typo.
how can I uninstall node-red-node-email@0.1.29?

0 Likes

#6

I had to remove the folder manually:

sudo rm -r /usr/lib/node_modules/node-red/node_modules/node-red-node-email

where my npm root is:

npm root -g
/usr/lib/node_modules
0 Likes

#7

Is it safe to delete the folder rather than uninstalling the module properly?
I mean, doesn't npm keep track of modules installed and later complain when missing without uninstalling?

0 Likes

#8

Well I first did the uninstall but the folder hasn't been removed!

0 Likes

#9

Unfortunately, in my case, the folder isn't empty.

0 Likes

#10

which folder?

0 Likes

#11

/usr/lib/node_modules/node-red/node_modules/node-red-node-email

0 Likes

#12

Ok, here is what I did:

sudo npm uninstall -g node-red-node-email

sudo rm -r /usr/lib/node_modules/node-red/node_modules/node-red-node-email

cd ~/.node-red

npm i node-red-node-email

this way the node-red-node-email is installed in the .node-red folder.

0 Likes

#13

I'm not fully convinced with deleting the module folder part. This is what I did:
sudo npm uninstall -g node-red-node-email
and it outputs:
up to date in 0.038s
which means uninstall did nothing.
later I called:
sudo npm ls -g node-red-node-email
and it outputs:

/usr/lib
└─┬ node-red@0.19.2
  └── node-red-node-email@0.1.29

then I removed the module folder as you suggested:
sudo rm -r /usr/lib/node_modules/node-red/node_modules/node-red-node-email
and re-printed the module status, and this time I get the following:
Screenshot%20from%202018-09-03%2013-53-39

As I pointed earlier, node-red keeps track of installed modules and deleting the module-folder just like that doesn't seem the right way.

0 Likes

#14

I know that, probably because of the node-red package.json dependency
"node-red-node-email": "0.1.*",

But if you go on installing the node locally in ./node-red and restart node-red, what happens?

0 Likes

#15

Installing module:

waqas@aslam:~/.node-red$ npm i node-red-node-email
npm WARN deprecated mailparser@0.6.2: Mailparser versions older than v2.3.0 are deprecated
npm WARN deprecated mimelib@0.3.1: This project is unmaintained
+ node-red-node-email@1.0.1
added 19 packages from 12 contributors in 1.47s

Showing local listing:

waqas@aslam:~/.node-red$ sudo npm ls node-red-node-email
node-red-project@0.0.1 /home/waslam/.node-red
└── node-red-node-email@1.0.1 

Showing global listing:

waqas@aslam:~/.node-red$ sudo npm ls -g node-red-node-email
/usr/lib
└─┬ node-red@0.19.2
  └── UNMET DEPENDENCY node-red-node-email@0.1.*

npm ERR! missing: node-red-node-email@0.1.*, required by node-red@0.19.2

Looks like my global listing is messed up.

0 Likes

#16

did you restart node-red and check the node-red-node-email version?

0 Likes

#17

It looks fine in node-red UI with correct version.

Seems like I've fixed the global listing issue by removing

"node-red-node-email": "0.1.*",

from package.json file in /usr/lib/node_modules/node-red

and now this is what I get when print global listing:

/usr/lib
└── (empty)

which means there's no such package installed globally.

0 Likes

#18

I did also remove the dependency but I think we should ask @knolleary or @dceejay for the best praxis.
Maybe update package.json?

0 Likes

#19

I wonder if you need to do a remove not uninstall

0 Likes

#20

I'm not sure I undestand you.
I just did an uninstall following the doc but actually it doesn't uninstall (probably because it's installed in the node-red path) so I've removed the folder with all the included files manually.

0 Likes