windows/linux下其他位置调用指定nodejs脚本报错Error: Cannot find module ‘esm’

问题:

有一个nodejs脚本名为html2word,同目录下还有它对应的package.json,正常在html2word所在目录下执行脚本没问题,但是在其他目录执行时报错:Error: Cannot find module 'esm'

原因:

在其他位置执行node脚本时找不到所依赖的模块,默认会在当前目录找,在其他位置当然没有node_modules了,只有脚本所在目录才有。

解决:

设置NODE_PATH环境变量,Node.js在搜索模块时会包含全局node_modules的路径,但是这个路径需要手动配置。

使用如下命令获取全局位置,默认在node安装目录下的lib目录下:

bash 复制代码
npm root -g
# /usr/share/node-v18.19.0-linux-x64/lib/node_modules

然后设置NODE_PATH环境变量:

windows

系统环境变量->添加

bash 复制代码
NODE_PATH="/usr/share/node-v18.19.0-linux-x64/lib/node_modules"

Linux:

临时生效(当前会话)

bash 复制代码
执行
export NODE_PATH="/usr/share/node-v18.19.0-linux-x64/lib/node_modules"

永久生效(当前用户)

bash 复制代码
vim ~/.bashrc

添加
export NODE_PATH="/usr/share/node-v18.19.0-linux-x64/lib/node_modules"

执行
source ~/.bashrc

永久生效(所有用户)

bash 复制代码
vim /etc/profile

添加
export NODE_PATH="/usr/share/node-v18.19.0-linux-x64/lib/node_modules"

执行
source /etc/profile
相关推荐
Mr.H01277 小时前
多线程文件拷贝:从原理到实现的完整指南
linux·运维
橘子真甜~7 小时前
C/C++ Linux网络编程5 - 网络IO模型与select解决客户端并发连接问题
linux·运维·服务器·c语言·开发语言·网络·c++
oushaojun28 小时前
Linux内核KGDB进阶:源码级调试实战演练(转)
linux·运维·kgdb
船长㉿8 小时前
vim常用命令
linux·编辑器·vim
大聪明-PLUS8 小时前
Linux 系统中的 CPU。文章 2:平均负载
linux·嵌入式·arm·smarc
listhi5208 小时前
使用SCP命令在CentOS 7上向目标服务器传输文件
linux·服务器·centos
天一生水water9 小时前
什么是调压器的P2s
linux·服务器·网络
风中凌乱10 小时前
ftp服务的安装与部署
linux·服务器
赖small强10 小时前
【Linux驱动开发】Linux Input子系统架构深度解析
linux·驱动开发·input·按键驱动·libinput
hero_heart10 小时前
ubuntu 密码重置(不用系统盘)
linux·运维·ubuntu