在Debian上安装Node.js和npm时,优先选择NodeSource仓库(获取最新稳定版本)或NVM(管理多版本)。两者均比系统默认仓库更便捷:
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash - # 替换16.x为目标版本
sudo apt-get install -y nodejs
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
source ~/.bashrc
nvm install 16 # 安装指定版本
nvm use 16 # 切换版本
两者均可通过node -v和npm -v验证安装。
npm init -y,自动生成package.json文件(包含项目元数据和依赖列表),避免手动编辑的繁琐。npm install <package-name>安装依赖,--save-dev标记开发依赖(如ESLint、Webpack),npm install会自动读取package.json中的依赖并安装,确保团队环境一致。JS应用(尤其是Node.js)需要长期运行,使用PM2作为进程管理器可简化这一流程:
npm install pm2 -gpm2 start app.js --name "my-js-app"(app.js为入口文件,--name指定应用名称)pm2 list查看运行中的应用,pm2 logs查看日志,pm2 restart my-js-app重启应用。pm2 startup生成启动脚本,再执行pm2 save保存当前进程列表,确保服务器重启后应用自动恢复。通过Nginx反向代理,可将JS应用绑定到域名、处理HTTPS,并提升并发性能:
sudo apt-get install nginx/etc/nginx/sites-available/yourdomain.com(替换为你的域名),添加以下内容:server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://localhost:3000; # 转发到Node.js应用的端口
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 ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/,然后重启Nginx:sudo systemctl restart nginx。Docker可将应用及其依赖打包成容器,避免“在我机器上能跑”的问题:
Dockerfile,内容如下:FROM node:16 # 使用指定版本的Node.js镜像
WORKDIR /usr/src/app # 设置工作目录
COPY package*.json ./ # 复制package.json和package-lock.json
RUN npm install # 安装依赖
COPY . . # 复制项目文件
EXPOSE 3000 # 暴露端口
CMD ["npm", "start"] # 启动命令
docker build -t your-js-app .(构建镜像),docker run -p 3000:3000 your-js-app(运行容器,映射端口)。npm prune移除package.json中未使用的依赖,减少项目体积。package-lock.json(npm)或yarn.lock(Yarn)锁定依赖版本,确保团队成员和部署环境的依赖一致。splitChunks提取公共代码,减少HTTP请求。基础配置示例:const path = require('path');
module.exports = {
entry: './src/index.js',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist')
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: 'babel-loader' // 使用Babel转译ES6+代码
}
]
}
};
运行npx webpack即可打包。通过以上步骤,可在Debian系统上快速搭建JS项目环境,简化配置流程,同时保证项目的可维护性与性能。