复制node_modules后执行yarn build提示MODULE_NOT_FOUND(ts-node已存在)
遇到复制node_modules到新机器后执行yarn build报MODULE_NOT_FOUND但ts-node已存在的情况,可以尝试以下几种无需重新安装依赖的解决方法:
修复.bin目录下的脚本路径
进入node_modules/.bin目录,打开ts-node脚本文件,检查内部的require路径是否为原机器的绝对路径。如果是,将其改为相对路径,比如把require('/原机器路径/ts-node')替换为require('../ts-node')——因为.bin目录的上级就是node_modules包根目录。重新生成本地可执行脚本
执行yarn run prepare命令,让yarn重新生成node_modules/.bin下的所有脚本文件。这个操作不会重新下载依赖,只是根据当前机器的环境修复脚本中的路径引用,适配新机器的文件结构。处理符号链接问题
如果原机器的node_modules中存在符号链接,复制时可能未正确保留(比如用cp命令未加-L参数)。执行ls -l node_modules/ts-node查看链接指向,若为断链,手动创建正确的符号链接,或者直接复制链接指向的实际文件到对应目录。直接调用ts-node入口文件
绕过.bin下的脚本,直接执行ts-node的核心入口文件,比如在build命令中替换为:node ./node_modules/ts-node/dist/bin.js [你的build入口文件]这样可以避免脚本路径错误导致的模块找不到问题。
对齐node版本与环境变量
确保两台机器的node版本一致,执行node -v对比版本号,版本差异过大可能导致模块解析异常。另外检查是否设置了NODE_PATH环境变量,执行unset NODE_PATH后再尝试运行yarn build,避免自定义路径干扰模块查找。
内容的提问来源于stack exchange,提问作者Bhagyashri Machale

