⚠️ Fixing “npm.ps1 cannot be loaded because running scripts is disabled” in PowerShell
Copyright Notice: This article is an original work licensed under the CC 4.0 BY-NC-ND license.
If you wish to repost this article, please include the original source link and this copyright notice.
Source link: https://v2know.com/article/1158
When working on a Node.js project in Windows using PowerShell, you may encounter this error:
npm : File C:\Program Files\nodejs\npm.ps1 cannot be loaded because running scripts is disabled on this system.
This happens because PowerShell's execution policy restricts running .ps1 scripts — including the auto-generated npm.ps1 — for security reasons.
Let’s walk through why this happens and how you can fix it safely and quickly.
🔍 Why Does This Error Occur?
When you run:
npm install
PowerShell looks for npm and finds npm.ps1 in your system path. If your execution policy is too strict (e.g., Restricted), it prevents PowerShell from running any .ps1 scripts — even trusted ones like npm.ps1.
✅ Solution 1: Bypass Execution Policy (Recommended for One-Time Use)
You can temporarily allow scripts in the current PowerShell session using:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
Then run your command again:
npm install
This change only lasts while the current PowerShell window is open — it reverts when closed.
✅ Solution 2: Call npm.cmd Directly
PowerShell is trying to run the .ps1 version of npm. You can bypass the script policy entirely by invoking the .cmd file instead:
& "C:\Program Files\nodejs\npm.cmd" install
This works because .cmd files aren't affected by PowerShell's script execution restrictions.
⚙️ Optional: View Current Execution Policy
To see your current policy settings, run:
Get-ExecutionPolicy -List
If CurrentUser or LocalMachine is set to Restricted, you’ll likely encounter this issue often.
⚠️ Not Recommended: Permanently Lowering Policy
You can permanently allow local scripts by setting:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
However, this lowers security and is not advised unless you understand the risks.
🧭 Final Thoughts
For most developers, a temporary bypass (Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass) or using npm.cmd directly is the best option.
If you find yourself hitting this issue often and you're developing in PowerShell daily, consider adjusting the policy to RemoteSigned, but do so with caution.
💡 Tip: You can also switch to using CMD or Git Bash as your terminal, where these issues do not occur.
This article was last edited at