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
相关推荐
晚风吹长发10 小时前
初步了解Linux中文件描述符-fd
linux·运维·服务器·c++·开发·文件
微风◝11 小时前
AlmaLinux9配置本地镜像仓库
linux·运维·服务器
赖small强11 小时前
【Linux C/C++开发】Linux C/C++ 高效延迟崩溃分析:基于 mprotect 的内存陷阱技术 (Electric Fence)
linux·c语言·c++·mprotect·buffer overflow
保持低旋律节奏11 小时前
linux——make/Makefile自动化工程构建
linux·运维·自动化
繁华似锦respect11 小时前
C++ & Linux 中 GDB 调试与内存泄漏检测详解
linux·c语言·开发语言·c++·windows·算法
爱潜水的小L11 小时前
自学嵌入式day25,树
linux
周杰伦_Jay11 小时前
【Linux Shell】命令完全指南
linux·运维·服务器
qq_4798754311 小时前
protobuf[2]
linux
sky北城11 小时前
Linux的回收站机制实现方式总结
linux·运维·服务器
代码游侠11 小时前
复习——栈、队列、树、哈希表
linux·数据结构·学习·算法