DirectAdmin环境Node.js依赖路径异常致启动崩溃的解决咨询
解决DirectAdmin共享主机Node.js依赖路径问题
方法1:用环境变量指定模块查找路径
在应用启动脚本或者DirectAdmin的启动配置里,添加NODE_PATH环境变量,指向你的node_modules所在路径:
export NODE_PATH=/home/你的用户名/nodevenv/你的应用名/16/lib/node_modules
然后启动应用就行,Node.js会自动去这个路径找依赖。如果是在DirectAdmin的应用设置里写启动命令,直接把环境变量加在命令前面:
NODE_PATH=/home/你的用户名/nodevenv/你的应用名/16/lib/node_modules node app.js
方法2:修改npm的prefix配置(永久生效)
要是想让后续npm安装依赖都直接装到应用目录,就在应用目录下执行:
npm config set prefix ./
之后npm会把模块放在应用目录的node_modules里,对应的命令行工具会放在当前目录的./bin下。注意先确认应用目录有写入权限,共享主机有时候会限制这个。
方法3:代码里手动加查找路径
如果上面的方法都不好使,就在你的Node.js入口文件(比如app.js)最顶部加这段代码,手动把目标路径加入模块查找列表:
const path = require('path'); const nodeModulesPath = '/home/你的用户名/nodevenv/你的应用名/16/lib/node_modules'; require('module').Module.globalPaths.push(nodeModulesPath);
这样Node.js加载模块时会优先检查这个路径。
额外提醒
- 把命令里的
你的用户名和你的应用名换成你实际的主机用户名和应用名称 - 要是用DirectAdmin的Node.js管理器装依赖,装之前先切换到应用目录,或者直接加
--prefix参数指定安装路径:
npm install --prefix /home/你的用户名/public_html/你的应用名 [依赖包名]
这样依赖会直接装到应用目录的node_modules下面。
内容的提问来源于stack exchange,提问作者MrLoon
相关产品推荐
相关产品推荐

