问题描述
我正在尝试部署一个使用朋友模板创建的Web应用程序。我对React/NextJS
框架不熟悉,所以不确定yarn
和npx
之间的区别。
我已经使用yarn next-build
来使应用程序在本地运行,并且运行良好。但是,现在我正尝试将其部署到NodeJS上的Google App Engine,但无法正常工作。
这是项目结构:
/dist/functions/next
/Nginx
/node_modules
/packages
/public
.gcloudignore
.Nowignore
.prettierrc
.yarnrc
app.yaml
babel.config.js
firebase.json
landing.Now.json
lerna.json
package-lock.json
package.json
yarn.lock
这是app.yaml
:
runtime: nodejs10
handlers:
- url: /.*
script: auto
这是package.json
:
{
"name": "streamplate-landing","description": "Your universal health app","version": "1.0.0","private": true,"author": "Streamplate","devDependencies": {
"@babel/cli": "^7.10.3","cpx": "^1.5.0","cross-env": "^7.0.2","firebase-tools": "8.4.3","husky": "^4.2.5","lerna": "^3.22.1","lint-staged": "^10.2.11","prettier": "^2.0.5","rimraf": "^3.0.2","polished": "^3.4.4"
},"workspaces": [
"packages/common","packages/landing","packages/landing-gatsby"
],"scripts": {
"dev": "next","build": "next build","start": "next start","clean": "lerna clean --yes && rimraf node_modules","preweb": "cpx \"packages/common/src/assets/image/**/*.*\" \"packages/landing/static\" -C","next-dev": "yarn workspace next-landing run dev","next-build": "rimraf dist && yarn workspace next-landing run build","next-start": "yarn workspace next-landing run start","next-export": "yarn workspace next-landing run export","gatsby-dev": "yarn workspace gatsby-landing run dev","gatsby-build": "yarn workspace gatsby-landing run build","gatsby-serve": "yarn workspace gatsby-landing run serve","prebuild-public": "rimraf \"dist/functions/**\" && rimraf \"dist/public\"","prefirebase-serve": "yarn run build-public && yarn run build-funcs && yarn workspace next-
landing run build && yarn run copy-deps && yarn run install-deps","firebase-serve": "cross-env NODE_ENV=production firebase serve","prefirebase-deploy": "yarn run build-public && yarn run build-funcs && yarn workspace next-
landing run build && yarn run copy-deps","firebase-deploy": "cross-env NODE_ENV=production firebase deploy","build-public": "cpx \"packages/common/src/assets/**/*.*\" \"dist/public/static\" -C && cpx
\"public/**/*.*\" \"dist/public\" -C && cpx \"packages/landing/public/**/*.*\"
\"dist/public\" -C","build-funcs": "babel \"packages/functions\" --out-dir \"dist/functions\"","copy-deps": "cpx \"packages/landing/*{package.json,package-lock.json,yarn.lock}\"
\"dist/functions\" -C","install-deps": "cd \"dist/functions\" && yarn","pregatsby-firebase-serve": "rimraf dist && yarn run gatsby-build && cpx \"packages/landing-
gatsby/public/**/*.*\" \"dist/public\" -C","gatsby-firebase-serve": "cross-env NODE_ENV=production firebase serve","pregatsby-firebase-deploy": "rimraf dist && yarn run gatsby-build && cpx
\"packages/landing-gatsby/public/**/*.*\" \"dist/public\" -C","gatsby-firebase-deploy": "firebase deploy","netlify-deploy": "yarn workspace next-landing run netlify-build"
},"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},"lint-staged": {
"*.{js,md,css}": [
"prettier --trailing-comma es5 --single-quote --write"
]
}
}
解决方法
将next export
添加到package.json
的脚本区域中
"scripts": {
...
"build": "next build && next export"
...
执行yarn build
后,out
目录将生成并添加到您的项目中。
初始化Firebase时,将out
目录用作您的public
。