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
相关推荐
IT 乔峰9 分钟前
脚本部署MHA集群
linux·shell
dz小伟9 分钟前
execve() 系统调用深度解析:从用户空间到内核的完整加载过程
linux
Mr_Xuhhh43 分钟前
博客标题:深入理解Shell:从进程控制到自主实现一个微型Shell
linux·运维·服务器
JoyCheung-1 小时前
Free底层是怎么释放内存的
linux·c语言
旖旎夜光1 小时前
Linux(9)
linux·学习
喵了meme2 小时前
Linux学习日记24:Linux网络编程基础
linux·网络·学习
whlqjn_12113 小时前
linux下使用SHC对Shell脚本进行封装和源码隐藏
linux·centos
weixin_462446233 小时前
K8s 集群部署基础:Linux 三节点 SSH 互信(免密登录)配置指南
linux·kubernetes·ssh
Hard but lovely4 小时前
Linux: 线程同步-- 基于条件变量 &&生产消费模型
linux·开发语言·c++
m0_738120724 小时前
应急响应——知攻善防靶场Linux-1详细应急过程
linux·运维·服务器·网络·web安全·ssh