🌹欢迎来到《小5讲堂》🌹
🌹这是《前端》系列文章,每篇文章将以博主理解的角度展开讲解。🌹
🌹温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!🌹

目录
- 前言
- 解决方案
-
- [方法1:以管理员身份运行 PowerShell 并更改执行策略](#方法1:以管理员身份运行 PowerShell 并更改执行策略)
- 方法2:只为当前会话临时允许
- 方法3:使用命令提示符 (CMD)
- 方法4:绕过策略执行单个脚本
- 推荐解决方案
- [Node.js 详细介绍](#Node.js 详细介绍)
-
- [什么是 Node.js?](#什么是 Node.js?)
- 核心特点
-
- [1. **非阻塞 I/O 和事件驱动**](#1. 非阻塞 I/O 和事件驱动)
- [2. **单线程但高并发**](#2. 单线程但高并发)
- 架构组成
-
- [1. **V8 JavaScript 引擎**](#1. V8 JavaScript 引擎)
- [2. **LibUV 库**](#2. LibUV 库)
- [3. **核心模块**](#3. 核心模块)
- 安装与使用
- 基本用法示例
-
- [1. **创建 HTTP 服务器**](#1. 创建 HTTP 服务器)
- [2. **文件操作**](#2. 文件操作)
- [3. **模块系统**](#3. 模块系统)
- [包管理 - npm](#包管理 - npm)
-
- 常用命令
- [package.json 示例](#package.json 示例)
- 应用场景
- 生态系统
- 优势与劣势
-
- [优势 ✅](#优势 ✅)
- [劣势 ❌](#劣势 ❌)
- 学习路径建议
- 文章推荐
前言
感觉每次重新安装一次vue运行环境都会遇到一些问题,这次在安装完成nodejs之后,没有重启电脑情况,直接运行npm install安装依赖时,就提示报错了。
解决方案
这个错误是因为 PowerShell 的执行策略限制导致的。以下是几种解决方法:
方法1:以管理员身份运行 PowerShell 并更改执行策略
-
以管理员身份打开 PowerShell
- 在开始菜单搜索 "PowerShell"
- 右键点击 "Windows PowerShell",选择 "以管理员身份运行"
-
执行以下命令:
powershell
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
- 或者更宽松的策略:
powershell
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
运行后就不会报错了,显示依赖包正在下载中,npm install,会根据配置文件下载对应的依赖,自动创建文件夹node_modules保存对应的依赖包。


方法2:只为当前会话临时允许
powershell
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
方法3:使用命令提示符 (CMD)
暂时使用 CMD 代替 PowerShell:
cmd
npm install 你的包名
方法4:绕过策略执行单个脚本
powershell
powershell -ExecutionPolicy Bypass -File "C:\Program Files\nodejs\npm.ps1"
推荐解决方案
建议使用方法1 ,设置 RemoteSigned 策略,这样:
- 可以运行本地脚本
- 从互联网下载的脚本需要数字签名
- 平衡了安全性和便利性
完成后,重新打开终端,npm 命令应该可以正常工作了。
Node.js 详细介绍
如果对nodejs概念有点忘记了,那么可以看看下面详细介绍回顾回顾下。
什么是 Node.js?
Node.js 是一个基于 Chrome V8 引擎 的 JavaScript 运行时环境,让开发者能够使用 JavaScript 编写服务器端应用程序。
核心特点
1. 非阻塞 I/O 和事件驱动
javascript
// 非阻塞代码示例
const fs = require('fs');
// 非阻塞方式读取文件
fs.readFile('file.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data);
});
console.log('程序继续执行,不会等待文件读取完成');
2. 单线程但高并发
- 使用事件循环处理并发
- 通过异步操作避免线程阻塞
- 适合 I/O 密集型应用
架构组成
1. V8 JavaScript 引擎
- 由 Google 开发
- 将 JavaScript 编译为机器码
- 高性能执行
2. LibUV 库
- 跨平台异步 I/O 库
- 处理事件循环
- 提供线程池
3. 核心模块
javascript
const http = require('http'); // HTTP 服务器
const fs = require('fs'); // 文件系统
const path = require('path'); // 路径处理
const events = require('events'); // 事件处理
安装与使用
安装
bash
# 下载安装包从官网
# 或使用包管理器
# Windows Chocolatey
choco install nodejs
# macOS Homebrew
brew install node
验证安装
bash
node --version # 查看 Node.js 版本
npm --version # 查看包管理器版本
基本用法示例
1. 创建 HTTP 服务器
javascript
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, {'Content-Type': 'text/html'});
res.end('<h1>Hello Node.js!</h1>');
});
server.listen(3000, () => {
console.log('服务器运行在 http://localhost:3000');
});
2. 文件操作
javascript
const fs = require('fs').promises;
async function readFile() {
try {
const data = await fs.readFile('example.txt', 'utf8');
console.log(data);
} catch (error) {
console.error('读取文件出错:', error);
}
}
3. 模块系统
javascript
// math.js
exports.add = (a, b) => a + b;
exports.multiply = (a, b) => a * b;
// app.js
const math = require('./math');
console.log(math.add(2, 3)); // 5
包管理 - npm
常用命令
bash
npm init # 初始化项目
npm install express # 安装包
npm install -g nodemon # 全局安装
npm update # 更新包
npm run start # 运行脚本
package.json 示例
json
{
"name": "my-app",
"version": "1.0.0",
"scripts": {
"start": "node app.js",
"dev": "nodemon app.js"
},
"dependencies": {
"express": "^4.18.0"
}
}
应用场景
适合的场景
- API 服务器 (RESTful, GraphQL)
- 实时应用 (聊天室、游戏)
- 微服务架构
- 命令行工具
- Web 爬虫
- SSR (服务器端渲染)
不适合的场景
- CPU 密集型任务 (图像处理、视频编码)
- 大型科学计算
生态系统
流行框架和库
- Express.js - Web 应用框架
- Socket.IO - 实时通信
- Mongoose - MongoDB ODM
- Sequelize - SQL ORM
- Jest - 测试框架
- Webpack - 模块打包
开发工具
- Nodemon - 自动重启开发服务器
- PM2 - 进程管理
- ESLint - 代码检查
- Prettier - 代码格式化
优势与劣势
优势 ✅
- 前后端语言统一 (JavaScript)
- 高性能和非阻塞 I/O
- 庞大的生态系统 (npm)
- 活跃的社区支持
- 快速开发
劣势 ❌
- 回调地狱 (Callback Hell)
- 单线程限制 CPU 密集型任务
- 相对年轻的生态系统
- 频繁的 API 变化
学习路径建议
- 基础 - JavaScript 语法、Node.js 核心模块
- 框架 - Express.js、Koa
- 数据库 - MongoDB、MySQL
- 认证 - JWT、OAuth
- 部署 - Docker、云平台
Node.js 让 JavaScript 从浏览器走向服务器,开创了全栈开发的新时代!
文章推荐
【前端】win11操作系统安装完最新版本的NodeJs运行npm install报错,提示在此系统上禁止运行脚本
【前端】Vue 3 + TypeScript 中 var 与 let 的区别,面试可能会问到,你知道怎么回答吗
【前端】使用Vue3过程中遇到加载无效设置点击方法提示不存在的情况,原来是少加了一个属性
【前端】Vue3+elementui+ts,TypeScript Promise转string错误解析,习惯性请出DeepSeek来解答
【前端】Vue3+elementui+ts,给标签设置样式属性style时,提示type check failed for prop,再次请出DeepSeek来解答
【前端】Layui的表格常用功能,表单提交事件,表格下拉按钮点击事件,表格外的按钮点击事件
【Echarts】曲线图上方显示数字以及自定义值,标题和副标题居中,鼠标上显示信息以及自定义信息
【Echarts】柱状图上方显示数字以及自定义值,标题和副标题居中,鼠标上显示信息以及自定义信息