在 Debian 上配置 JavaScript 运行环境
一 安装 Node.js 与 npm
- 更新索引并安装系统包:sudo apt update && sudo apt install -y nodejs npm。完成后用 node -v 与 npm -v 验证版本。适合希望快速上手且版本要求不高的场景。
- 使用 NodeSource 安装指定版本(推荐):例如安装 18.x(将 18.x 替换为所需版本)
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
验证:node -v、npm -v。适合需要较新或特定版本的用户。
- 使用 NVM(Node Version Manager)进行多版本管理:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
source ~/.bashrc
nvm install --lts 或 nvm install 18
nvm use 18
验证:node -v、npm -v。适合需要在多个项目间切换 Node 版本的开发者。
二 配置 npm 与全局包路径
- 配置国内镜像源(可选,提升下载速度):npm config set registry https://registry.npm.taobao.org。
- 自定义全局包目录(避免权限问题):
mkdir -p ~/.npm-global
npm config set prefix ‘~/.npm-global’
在 ~/.bashrc 或 ~/.zshrc 中添加:export PATH=~/.npm-global/bin:$PATH,然后 source ~/.bashrc。
- 常用全局工具示例:sudo npm install -g nodemon(或将其安装到用户目录以避免 sudo:npm install -g nodemon)。
三 创建并运行示例项目
- 初始化项目:mkdir my-js-project && cd $_ && npm init -y
- 安装依赖:npm install express
- 创建入口文件 index.js:
const express = require(‘express’);
const app = express();
const port = 3000;
app.get(‘/’, (req, res) => res.send(‘Hello World’));
app.listen(port, () => console.log(Server running at http://localhost:${port}/));
- 启动服务:node index.js,浏览器访问 http://localhost:3000。
四 进程守护与反向代理(生产建议)
- 使用 PM2 守护进程:sudo npm install -g pm2;pm2 start index.js;常用:pm2 list、pm2 logs、pm2 restart index.js。
- 使用 Nginx 反向代理:
sudo apt install nginx
编辑 /etc/nginx/sites-available/default,加入:
server {
listen 80; server_name your_domain.com;
location / { proxy_pass http://localhost:3000; proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection ‘upgrade’;
proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; }
}
测试并生效:sudo nginx -t && sudo systemctl reload nginx。
五 常见问题与优化
- 权限错误:优先使用用户级全局目录(见第二节),尽量避免以 root 运行 npm。
- 多版本并存与切换:使用 NVM 安装与切换不同 Node 版本,互不干扰。
- 依赖安装慢或失败:切换为国内镜像源(见第二节)。
- 构建原生模块失败:安装构建工具与依赖,例如 sudo apt install -y build-essential libssl-dev。
- 代码质量与错误预防:全局安装 ESLint 并初始化(npm install -g eslint;eslint --init),配合编辑器/IDE 规则提升稳定性。