部署到 heroku 时出现 vite 错误
Vite error during the deployment to heroku
我的文件夹结构:
我的脚本:
"scripts": {
"start": "node main.mjs",
"dev": "NODE_ENV='development' npx nodemon main.mjs",
"build": "cd client && yarn build",
"install-client": "cd client && yarn",
"heroku-postbuild": "yarn install-client && yarn build"
}
client/package.json
"dependencies": {
...
},
"devDependencies": {
...
"@vitejs/plugin-vue": "^2.3.1",
"typescript": "~4.6.3",
"vite": "^2.9.1",
"vue-tsc": "^0.33.9"
}
错误:/bin/sh: 1: vue-tsc: not found
我的猜测是客户端的 devDependencies
未被提取。但是我没有将 NODE_ENV
设置为 production
所以不知道为什么他们没有被获取。
将所有 devDependencies
移动到 dependencies
是个好主意吗?
这可能是由以下两个问题之一引起的:
- Heroku 正在从生产应用程序中删除 devDependencies
- Heroku 正在缓存以前构建
中的 node_modules
为了为应用程序创建更小的 slug 大小,Heroku 的 buildpack 将在构建结束时从 package.json 中删除 devDependencies,这样 slug 将只包含列出的依赖项运行时间。
您可以通过 运行:
禁用此依赖性修剪
heroku config:set NPM_CONFIG_PRODUCTION=false
或者,对于 Yarn
heroku config:set YARN_PRODUCTION=false
但如果是这种情况,并且在运行时也使用了缺少的依赖项,那么它应该列在 dependencies
而不是 devDependencies
.
下
Heroku,默认使用 npm ci
而不是 npm i
。所以另一种选择是将其切换回来,使用:
heroku config:set USE_NPM_INSTALL=true
并禁用缓存:
heroku config:set NODE_MODULES_CACHE=false
还值得检查一下您是否在 package.json(在 engines
下)中指定了正确的 NPM 和 Node 版本。并且您已经提交了 package-lock.json
或 yarn.lock
.
我的文件夹结构:
我的脚本:
"scripts": {
"start": "node main.mjs",
"dev": "NODE_ENV='development' npx nodemon main.mjs",
"build": "cd client && yarn build",
"install-client": "cd client && yarn",
"heroku-postbuild": "yarn install-client && yarn build"
}
client/package.json
"dependencies": {
...
},
"devDependencies": {
...
"@vitejs/plugin-vue": "^2.3.1",
"typescript": "~4.6.3",
"vite": "^2.9.1",
"vue-tsc": "^0.33.9"
}
错误:/bin/sh: 1: vue-tsc: not found
我的猜测是客户端的 devDependencies
未被提取。但是我没有将 NODE_ENV
设置为 production
所以不知道为什么他们没有被获取。
将所有 devDependencies
移动到 dependencies
是个好主意吗?
这可能是由以下两个问题之一引起的:
- Heroku 正在从生产应用程序中删除 devDependencies
- Heroku 正在缓存以前构建 中的 node_modules
为了为应用程序创建更小的 slug 大小,Heroku 的 buildpack 将在构建结束时从 package.json 中删除 devDependencies,这样 slug 将只包含列出的依赖项运行时间。
您可以通过 运行:
禁用此依赖性修剪heroku config:set NPM_CONFIG_PRODUCTION=false
或者,对于 Yarn
heroku config:set YARN_PRODUCTION=false
但如果是这种情况,并且在运行时也使用了缺少的依赖项,那么它应该列在 dependencies
而不是 devDependencies
.
Heroku,默认使用 npm ci
而不是 npm i
。所以另一种选择是将其切换回来,使用:
heroku config:set USE_NPM_INSTALL=true
并禁用缓存:
heroku config:set NODE_MODULES_CACHE=false
还值得检查一下您是否在 package.json(在 engines
下)中指定了正确的 NPM 和 Node 版本。并且您已经提交了 package-lock.json
或 yarn.lock
.