Windows 11 安装 Node.js 后 npm install 报错:禁止运行脚本的解决方案
在 Windows 11 环境下配置 Node.js 开发环境时,执行 npm install 经常会遇到'在此系统上禁止运行脚本'的错误。这通常不是软件损坏,而是 PowerShell 的安全策略限制。今天分享几种有效的解决方法。

解决方案
这个错误是因为 PowerShell 默认的执行策略限制了脚本的运行。以下是几种解决方法,按推荐程度排序。
方案一:以管理员身份修改执行策略(推荐)
这是最彻底的解决办法,设置后当前用户下即可正常运行本地脚本。
- 以管理员身份打开 PowerShell
- 在开始菜单搜索 "PowerShell"
- 右键点击 "Windows PowerShell",选择 "以管理员身份运行"
- 执行以下命令:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
或者更宽松的策略(仅用于测试环境):
Set-ExecutionPolicy Unrestricted -Scope CurrentUser
运行成功后,重新打开终端,npm install 应该可以正常工作了。显示依赖包正在下载中,会自动创建 node_modules 文件夹保存对应的依赖包。

方案二:只为当前会话临时允许
如果你不想永久修改系统策略,只想在当前窗口生效,可以使用 -Scope Process 参数。
Set-ExecutionPolicy RemoteSigned -Scope Process
关闭该终端窗口后,策略将自动恢复。
方案三:使用命令提示符 (CMD)
如果不想折腾 PowerShell,暂时使用 CMD 代替也可以绕过此限制:
npm install 你的包名
方案四:绕过策略执行单个脚本
针对特定脚本文件,可以直接调用 PowerShell 并指定 Bypass 参数:
powershell -ExecutionPolicy Bypass -File "C:\Program Files\nodejs\npm.ps1"
建议使用方法一,设置
RemoteSigned策略。这样既能运行本地脚本,又能确保从互联网下载的脚本需要数字签名,平衡了安全性和便利性。
Node.js 核心概念回顾
搞定环境问题后,顺便复习一下 Node.js 的核心机制,帮助理解为什么它适合做服务端开发。
什么是 Node.js?
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境,让开发者能够使用 JavaScript 编写服务器端应用程序。
核心特点
1. 非阻塞 I/O 和事件驱动
Node.js 不等待操作完成就继续执行后续代码,非常适合 I/O 密集型应用。
// 非阻塞方式读取文件
const fs = require('fs');
fs.readFile('file.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data);
});
console.log('程序继续执行,不会等待文件读取完成');
2. 单线程但高并发
- 使用事件循环处理并发
- 通过异步操作避免线程阻塞
- 适合高并发网络服务
架构组成
- V8 JavaScript 引擎:由 Google 开发,将 JavaScript 编译为机器码,高性能执行。
- LibUV 库:跨平台异步 I/O 库,处理事件循环和提供线程池。
- 核心模块:如
http,fs,path,events等内置功能。
const http = require('http');
const fs = require('fs');
const path = require('path');
const events = require('events');
基本用法示例
1. 创建 HTTP 服务器
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. 文件操作
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. 模块系统
// 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
常用命令
npm init # 初始化项目
npm install express # 安装包
npm install -g nodemon # 全局安装
npm update # 更新包
npm run start # 运行脚本
package.json 示例
{
"name": "my-app",
"version": "1.0.0",
"scripts": {
"start": "node app.js",
"dev": "nodemon app.js"
},
"dependencies": {
"express": "^4.18.0"
}
}
应用场景与生态
适合的场景:API 服务器、实时应用、微服务架构、命令行工具、Web 爬虫、SSR。
不适合的场景:CPU 密集型任务(图像处理)、大型科学计算。
流行框架和库:Express.js、Socket.IO、Mongoose、Sequelize、Jest、Webpack。
开发工具:Nodemon、PM2、ESLint、Prettier。
优势与劣势
优势 ✅
- 前后端语言统一 (JavaScript)
- 高性能和非阻塞 I/O
- 庞大的生态系统 (npm)
- 活跃的社区支持
劣势 ❌
- 回调地狱 (Callback Hell)
- 单线程限制 CPU 密集型任务
- 相对年轻的生态系统
- 频繁的 API 变化
Node.js 让 JavaScript 从浏览器走向服务器,开创了全栈开发的新时代!


