Win10 搭建本地开发环境node项目记录,解决`gyp` failed with exit code: 1和node-sass安装失败问题

 环境:python2.7,node 8

 从gitlab拉取项目文件

>git clone [url]    // 拉取master

>git checkout [branch name]  // 切换分支

或者

>git clone -b [branch name]  [url]   // 拉取分支

根据要求来拉取,期间可能要提供gitlab 的账号密码,输入就好了。

运行node项目

 安装项目依赖

npm i  (同 npm install)

使用npm运行项目

package.json文件中一般已经配置了scripts对象,定义了启动项目的命令,一般为dev 或者start

有的项目如果需要先进行编译(gulp,grunt,webpack等等), 可能会有build相关的命令)

> npm run dev / npm run start  //启动项目

手动运行

> npm run build // 如果项目需要事先编译,则需要先执行

node app.js    // 运行node项目的入口js文件,顺利的话直接就启动成功。

可能错误

1. stack Error: `gyp` failed with exit code: 1

 执行> npm install --global --production windows-build-tools

控制台会自动安装以下3个软件,可能要1个多G,也可以手动去官网下载这些依赖

安装后再执行node app.js启动


根据评论区@清蒸鱼跃龙门的描述,在macOS

./util/has_lib.sh: line 31: pkg-config: command not found gyp: Call to './util/has_lib.sh freetype' returned exit status 0 while in binding.gyp. while trying to load binding.gyp gyp ERR! configure error gyp ERR! stack Error: `gyp` failed with exit code: 1 gyp ERR! stack at ChildProcess.onCpExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:351:16) gyp ERR! stack at ChildProcess.emit (events.js:210:5) gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:272:12) gyp ERR! System Darwin 20.1.0 gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" gyp ERR! cwd /Users/.../node_modules/canvas gyp ERR! node -v v12.14.0 gyp ERR! node-gyp -v v5.0.5 gyp ERR! not ok

 解决(原文见评论区):

  1. 确认安装了homebrew(brew命令)
  2. brew install pkg-config 安装pkg-config
  3. 重试npm i

2. nods-sass安装问题

在npm i / install 或者 npm rebuild的时候安装node-sass失败,可能因为网络问题下载不了win32-x64-64_binding.node导致

推荐解决:

  1. npm remove node-sass
  2. npm install sass -D
  3. /deep/ 替换为::v-deep

常规解决

  • npmrc中配置
  1. 在C:\Users\xxx下建立.npmrc文件,内容为 SASS_BINARY_PATH=C:\npm\win32-x64-64_binding.node
  2. 网上下载win32-x64-64_binding.node后放在C:\npm\win32-x64-64_binding.node目录下重试
  • 或直接在命令后加 npm i node-sass --SASS_BINARY_PATH=C:\npm\win32-x64-64_binding.node

3. cannot fine module xxx  缺少相关依赖

首先确保是./node_modules/下的npm依赖,不是自己项目的依赖,如果是自己的依赖找不到,一般是路径的问题。

>npm install xxx   //安装指定依赖。  或npm i 安装package.json中指定的全部依赖

4.No matching version found for 'xxx@x.x.x'

先去npm官网确认版本号。

原因分析

有时可能npm中,一个依赖几个小时前发了包,而如果使用了npm私服(自己公司的npm镜像),而该镜像未同步

在执行npm i的时候,项目依赖的依赖自动想要更新最新的版本号,而私服未同步,导致找不到版本。

解决方案

  • >npm install xxx@版本号   可能会触发私服去同步最新的包
  • 有其他环境能用的package.lock.json的话,复制一份替换掉根目录下同名文件

执行npm i (用package.json安装依赖)或者npm ci (用package.lock.json安装依赖)       关于npm i和npm ci的区别

  • 等待私服同步

5. 曾用其他版本的node执行过npm。

npm rebuild   将该项目目录下的node_module文件夹删除后重新执行npm install ,

npm错误补充

npm报错证书错误  执行 npm cache verify

npm若安装卡住,可能是网络问题

  • 尝试使用淘宝cnpm npm install cnpm -g
  • 尝试指定npm为淘宝镜像 npm config set registry https://registry.npm.taobao.org 或在.npmrc文件中写入registry=https://registry.npm.taobao.org

对于其他的一些奇怪的npm问题,参考

  • 删除 ./package-lock.json 文件
  • 删除项目根目录 ./node_modules 文件夹
  • npm cache clean -f   清除npm缓存
  • npm install  重新安装依赖

若还是有报错

  • 检查项目是否切换到正确的分支。
  • 检查项目配置。
  • 检查和尝试其他node版本。
  • 重新拉取分支。

曾经遇到node6,node8可以跑,node10不行。node8,node10可以的,node6不行。

注: node 13+ 支持了es module

参考资料

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值