安装了vs2019 编译node-sass node-gyp 找不到编译器的解决方法
1 新建powershell脚本文件
<#
This is a workaround for "node-gyp is unable to find msbuild if VS2019 is installed"
https://github.com/nodejs/node-gyp/issues/1663
It create a shim EXE as "MSBuild\15.0\Bin\MSBuild.exe" to target "MSBuild\Current\Bin\MSBuild.exe"
By noseratio - MIT license - use at your own risk!
It requires admin mode, I use wsudo/wsudox (https://chocolatey.org/packages/wsudo) for that:
wsudo powershell -f make-msbuild-shim.ps1
#> #Requires -RunAsAdministrator
#Requires -Version 5.1
$ErrorActionPreference = "Stop" $vsBasePath = . "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" `
-latest `
-requires Microsoft.Component.MSBuild `
-property installationPath -format value if (!$vsBasePath) {
throw "VS2017+ must be installed"
} $msbuildSimPath = [System.IO.Path]::Combine($vsBasePath, "MSBuild\15.0\Bin\MSBuild.exe")
if ([System.IO.File]::Exists($msbuildSimPath)) {
Write-Host "Already exists: $msbuildSimPath"
exit 0;
} # Create the shim .EXE using C#
$code = @"
using System;
using System.Diagnostics;
using System.IO;
using System.Linq;
static class MSBuildShim
{
static void Main()
{
var thisExe = Process.GetCurrentProcess().MainModule.FileName;
var thisExeDir = Path.GetDirectoryName(thisExe);
var newExe = Path.GetFullPath(Path.Combine(thisExeDir, "..\\..\\Current\\Bin", "MSBuild.exe"));
if (!File.Exists(newExe))
throw new FileNotFoundException(newExe);
var process = new Process();
process.StartInfo.FileName = newExe;
process.StartInfo.Arguments = String.Join("\u0020", Environment.GetCommandLineArgs().Skip(1));
process.StartInfo.UseShellExecute = false;
if (!process.Start())
throw new InvalidOperationException(newExe);
process.WaitForExit();
Environment.ExitCode = process.ExitCode;
}
}
"@ Add-Type -TypeDefinition $code `
-OutputType ConsoleApplication `
-OutputAssembly "$msbuildSimPath" `
-ReferencedAssemblies "System.Core.dll" Write-Host "Shim created at: $msbuildSimPath"
2 打开powershell 执行脚本 生成垫片程序
如果提示禁止执行脚本 则执行 set-executionpolicy remotesigned
附:npm install --global --production windows-build-tools 这个不太好使且只支持2015 2017
参考 :1 http://continuousdeveloper.com/2019/04/09/node-gyp-with-visual-studio-2019/
2 https://blog.csdn.net/ebzxw/article/details/85019887
安装了vs2019 编译node-sass node-gyp 找不到编译器的解决方法的更多相关文章
- Sublime2编译Python程序EOFError:EOF when reading a line解决方法【转】
在Sublime2中编译运行Python文件时,如果代码中包含用户输入的函数时(eg. raw_input()),Ctrl+b编译运行之后会提示以下错误: 解决方法:安装SublimeREPL打开Su ...
- 【pycharm】pycharm上安装tensorflow,报错:AttributeError: module 'pip' has no attribute 'main' 解决方法
pycharm上安装tensorflow,报错:AttributeError: module 'pip' has no attribute 'main' 解决方法 解决方法: 在pycharm的安装目 ...
- Win7,Win8安装ArcGIS软件或Node.js等安装包出现2503错误的解决方法
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZXNyaWNoaW5hY2Q=/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...
- k-vim安装及The ycmd server SHUT DOWN (restart with ':YcmRestartServer')这种错误的解决方法
vim配置 下载地址:https://github.com/wklken/k-vim 安装步骤: 1. clone 到本地 git clone https://github.com/wklken/k- ...
- 安装redis出现cc adlist.o /bin/sh:1:cc:not found的解决方法
安装redis时 提示执行make命令时提示 CC adlist.o /bin/sh: cc: 未找到命令 问题原因:这是由于系统没有安装gcc环境,因此在进行编译时才会出现上面提示,当安装好gc ...
- 解决安装VC6.0后出现MSDEV.EXE错误,无法用打开工程解决方法
问题:安装VC6.0后,在打开项目或添加文件时,出现如下错误: 可能导致原因:由于Ms安装软件的兼容性问题,导致VC6.0安装不完全, 解决方法:--网上打sp6补丁的方法貌似不可用,所以可以采用另一 ...
- Centos7安装完毕后重启提示Initial setup of CentOS Linux 7 (core)的解决方法
问题: CentOS7安装完毕,重新开机启动后显示: Initial setup of CentOS Linux 7 (core) 1) [x] Creat user 2) [!] License i ...
- mac os x 安装mysql遇到 Access denied for user 'root'@'localhost' (using password: YES)的解决方法
最近把开发环境迁移到macbook上,装上mysql启动之后,连接,总是报这个错误.5.5的版本默认密码为空.其实这个错误是root未授权的问题.解决方法如下: 未给localhost root用户授 ...
- php5.3.*编译出现make: *** [ext/gd/libgd/gd_compat.lo] Error 1 解决方法
升级系统,把php5.2.9升级到5.3.6,按照以前的编译参数,configure能正常通过,但是在make的时候提示: In file included from /root/php-5.3.6 ...
随机推荐
- zabbix 监控hp 打印机
https://share.zabbix.com/search?searchword=hp+printer&search_cat=1
- postgres 数据导入导出
# 导出表结构 pg_dump -U postgres -s helloworld > hello.sql # 导出表数据 pg_dump -U postgres helloworld & ...
- 由ES规范学JavaScript(二):深入理解“连等赋值”问题
var foo={rzx:1} var bar =foo; foo.x=foo={rzx:100} console.log(foo.x) console.log(bar.x) 有这样一个热门问题: ...
- 【mysql】一对一关系的理解,以及Navicat Premium怎么设置字段的唯一性(UNIQUE)?
背景:一对一关系设计方法: 设计2张表:customer表,student表 学生表中通过字段customer_id与customer表产生关系. student表中的customer_id与cust ...
- datalist的模板里的label要绑定一个函数
列下如何在前台绑定数据时呼叫後台方法 如下GetInfoByID是后台方法,Eval("ID").ToString()是你在前台绑定数据传入的字段名 <asp:Label I ...
- java创建多线程实现并行计算任务处理
1.直接上代码一看明白: package multithreadingTest; class fblib extends Thread{ public static Integer fb(Intege ...
- 使用logstash收集java、nginx、系统等常见日志
目录 1.使用codec的multiline插件收集java日志... 1 2.收集nginx日志... 2 3.收集系统syslog日志... 3 4.使用fliter的grok模块收集mysql日 ...
- python 并发编程 多进程 互斥锁 目录
python 并发编程 多进程 互斥锁 模拟抢票 互斥锁与join区别
- 关于android工具链
1 android sdk platform tools 同android platform交互的工具,包括adb.fastboot和systrace. 2 sdk build tools 用于bui ...
- 查看Dubbo服务-通过zk客户端
一.基本概念 https://www.cnblogs.com/huasky/p/8268568.html 二.下载与安装 1.进入要下载的版本的目录,选择.tar.gz文件下载 下载链接:http:/ ...