环境: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,也可以手动去官网下载这些依赖
- python(v2.7 ,不支持3.x)
- visual C++ Build Tools 或 (vs2015以上(包含15))
- .net framework 4.5.1 [参考资料2]
安装后再执行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
解决(原文见评论区):
- 确认安装了homebrew(brew命令)
- brew install pkg-config 安装pkg-config
- 重试npm i
2. nods-sass安装问题
在npm i / install 或者 npm rebuild的时候安装node-sass失败,可能因为网络问题下载不了win32-x64-64_binding.node导致
推荐解决:
- node-sass替换为dart-sass [参考资料3]
- npm remove node-sass
- npm install sass -D
- /deep/ 替换为::v-deep
常规解决
- npmrc中配置
- 在C:\Users\xxx下建立.npmrc文件,内容为 SASS_BINARY_PATH=C:\npm\win32-x64-64_binding.node
- 网上下载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