Heroku部署vue项目失败:sh: 1: vue-cli-service: not found

简介: Heroku部署vue项目失败:sh: 1: vue-cli-service: not found

剧情介绍

最近写了一个Express + Vue前后端项目demo,打算部署到Heroku

部分目录结构如下

server.js           // Express提供数据接口
package.json
client/             //  Vue前端显示数据
  package.json

整个项目都保存到Github上,让Heroku自动部署

前端项目不能在本地打包,不然dist目录将会进入git,这样不太好

所以,部署的时候需要在线上完成打包操作

package.json如下

"scripts": {
    "postinstall": "npm run client-install && npm run client-build",
    "client": "npm start --prefix client",
    "client-build": "npm run build --prefix client",
    "client-install": "npm install --prefix client",
    "start": "node server.js",
    "server": "nodemon server.js --ignore client",
    "dev": "concurrently \"npm run server\" \"npm run client\""
  },

client/package.json

"scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "start": "npm run serve"
  },

Heroku会自动执行 : postinstall -> start

所以我在 postinstall 中对client前端项目进行了【依赖安装】和【项目打包】

上面的两个配置文件,在本地执行是没有问题的,

Heroku线上部署

到了Heroku线上部署报错了:

sh: 1: vue-cli-service: not found

截图:

15.1.png


网上的文章,大致说了3个解决方法

1、重新安装

将 文件夹node_modules 删除在执行 npm install 进行重新安装

2、指定路径

./node_modules/.bin/vue-cli-service  build

3、全局安装

npm install @vue/cli-service -g

线下环境确实没问题,不过到了Heroku线上部署就无效

问题解决

进过多番百度,发现有类似文章提到了一个环境变量NODE_ENV=production

查看部署日志,果然发现了类似的设置,Heroku很热心的给我设置了环境变量

15.2.png


修改环境变量

{
"postinstall": "NODE_ENV=development && npm run client-install && npm run client-build && NODE_ENV=production"
}

总算部署成功了

15.3.png


最后的package.json文件

"scripts": {
    "postinstall": "NODE_ENV=development && npm run client-install && npm run client-build && NODE_ENV=production",
    "client": "npm start --prefix client",
    "client-build": "npm run build --prefix client",
    "client-install": "npm install --prefix client",
    "start": "node server.js",
    "server": "nodemon server.js --ignore client",
    "dev": "concurrently \"npm run server\" \"npm run client\""
  }

部署完后的地址

https://web-node-app.herokuapp.com/

参考

linux 搭建 jenkins 前端自动构建时,老是提示 sh: vue-cli-service: command not found

相关文章
|
18天前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的销售项目流程化管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的销售项目流程化管理系统附带文章源码部署视频讲解等
30 3
|
18天前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp小程序的项目申报管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp小程序的项目申报管理系统附带文章源码部署视频讲解等
29 3
|
18天前
|
JSON JavaScript 前端开发
在Vue3项目中,Vite起到的作用及其可以做的事情
Vite是Vue 3项目的关键快速开发服务器和高效的热模块替换(HMR)。它的亮点包括:使用ES模块实现快速启动和动态加载,模块级别HMR提升开发效率,Rollup打包优化生产构建。此外,Vite还支持插件系统、自定义配置、静态资源处理和现代JS特性。通过`npm create vite`可快速搭建Vue项目,配置文件`vite.config.js`可定制行为,`.env`文件管理环境变量。Vite优化了开发与构建流程,提高开发者效率并保证构建性能。
|
16天前
|
JavaScript 前端开发 测试技术
使用 Vue CLI 脚手架生成 Vue 项目
通过 Vue CLI 创建 Vue 项目可以极大地提高开发效率。它不仅提供了一整套标准化的项目结构,还集成了常用的开发工具和配置,使得开发者可以专注于业务逻辑的实现,而不需要花费大量时间在项目配置上。
75 7
使用 Vue CLI 脚手架生成 Vue 项目
|
3天前
|
JavaScript 开发工具 git
大事件项目40---Vue代码里如何引入相对路径图片
大事件项目40---Vue代码里如何引入相对路径图片
|
6天前
Vue3项目 小兔鲜问题总结
Vue3项目 小兔鲜问题总结
16 2
|
7天前
|
JavaScript 前端开发 API
Vue3入门 - vue3相比于vue2的优点,及如何创建Vue3项目
Vue3入门 - vue3相比于vue2的优点,及如何创建Vue3项目
|
14天前
|
资源调度 JavaScript 前端开发
vite+vue3+ts从0到1搭建企业级项目(2)
vite+vue3+ts从0到1搭建企业级项目
29 1
|
18天前
|
JavaScript 算法
“Error: error:0308010C:digital envelope routines::unsupported”启动vue项目遇到一个错误【已解决
“Error: error:0308010C:digital envelope routines::unsupported”启动vue项目遇到一个错误【已解决
26 1
|
19天前
|
JavaScript API
【vue实战项目】通用管理系统:信息列表,信息的编辑和删除
【vue实战项目】通用管理系统:信息列表,信息的编辑和删除
29 2