我怎样才能设置火力地堡托管multisites与Nextjs
我试图部署nextjs应用火力托管和想支持多个站点。当我部署它的所有应用程序呈现的默认应用程序。我怎样才能解决这个问题?
我下面就部署多个网站使用AngularJs到火力教程here,我试图用NextJs更换Angularjs
在脚本的package.json
{
"scripts": {
"accounts": "next \"src/apps/accounts/\"",
"accounts-build": "next build \"src/apps/accounts/\"",
"admin": "next \"src/apps/admin/\"",
"admin-build": "next build \"src/apps/admin/\"",
"preserve": "npm run build-public && npm run build-funcs && npm run admin-build && npm run copy-deps && npm run install-deps",
"serve": "cross-env NODE_ENV=production firebase serve",
"predeploy": "npm run build-public && npm run build-funcs && npm run accounts-build && npm run admin-build && npm run copy-deps",
"deploy": "firebase deploy",
"clean": "rimraf \"dist/functions/**\" && rimraf \"dist/public\"",
"build-public": "cpx \"src/public/**/*.*\" \"dist/public\" -C",
"build-funcs": "babel \"src/functions\" --out-dir \"dist/functions\"",
"copy-deps": "cpx \"*{package.json,package-lock.json,yarn.lock}\" \"dist/functions\" -C",
"install-deps": "cd \"dist/functions\" && npm i"
}
}
firebase.json
{
"hosting": [
{
"target": "accounts",
"public": "dist/public",
"rewrites": [
{
"source": "**/**",
"function": "accounts"
}
]
},
{
"target": "admin",
"public": "dist/public",
"rewrites": [
{
"source": "**/**",
"function": "admin"
}
]
}
],
"functions": {
"source": "dist/functions"
}
}
.firebaserc
{
"projects": {
"default": "example-app"
},
"targets": {
"example-app": {
"hosting": {
"accounts": [
"example-accounts"
],
"admin": [
"example-admin"
]
}
}
}
}
在功能index.js
import {https} from 'firebase-functions'
const dev = process.env.NODE_ENV !== 'production'
const app = require('next')({dev, conf: {distDir: 'next'}})
const handle = app.getRequestHandler()
const accounts = https.onRequest((req, res) =>
app.prepare().then(() => handle(req, res)))
const admin = https.onRequest((req, res) =>
app.prepare().then(() => handle(req, res)))
export {accounts, admin}
next.config.js它移动到根文件夹
module.exports = {
distDir: '../../../dist/functions/next'
}
所有应用中呈现的默认帐户应用。想管理员渲染管理应用。
回答如下:当您在不同的文件夹作为管理员,占在你的应用程序目录,所以当你正在构建为他们每个人的next.js总是考虑你正在最后的构建和服务上次生成的页面,以便解决这个问题,我们有建立在不同的目录中建立admin的目录将是
DIST /功能/管理/下一
并为客户的目录将是
DIST /功能/帐号/下一个
你必须定义不同DISTDIR该如此,而服务页面它将在指定的目录,请改变你
next.config.js对admin
module.exports = {
distDir: '../../../dist/functions/admin/next'
}
next.config.js的账户
module.exports = {
distDir: '../../../dist/functions/accounts/next'
}
保持这种分别next.config.js在你的src /应用/管理和src /应用/用户目录,并改变你的
在功能index.js
import {https} from 'firebase-functions'
const dev = process.env.NODE_ENV !== 'production'
const appAdmin = require('next')({dev, conf: {distDir: 'admin/next'}});
const appAccounts= require('next')({dev, conf: {distDir: 'accounts/next'}});
const handle = app.getRequestHandler()
const accounts = https.onRequest((req, res) =>
appAccounts.prepare().then(() => handle(req, res)))
const admin = https.onRequest((req, res) =>
appAdmin.prepare().then(() => handle(req, res)))
export {accounts, admin}
我怎样才能设置火力地堡托管multisites与Nextjs
我试图部署nextjs应用火力托管和想支持多个站点。当我部署它的所有应用程序呈现的默认应用程序。我怎样才能解决这个问题?
我下面就部署多个网站使用AngularJs到火力教程here,我试图用NextJs更换Angularjs
在脚本的package.json
{
"scripts": {
"accounts": "next \"src/apps/accounts/\"",
"accounts-build": "next build \"src/apps/accounts/\"",
"admin": "next \"src/apps/admin/\"",
"admin-build": "next build \"src/apps/admin/\"",
"preserve": "npm run build-public && npm run build-funcs && npm run admin-build && npm run copy-deps && npm run install-deps",
"serve": "cross-env NODE_ENV=production firebase serve",
"predeploy": "npm run build-public && npm run build-funcs && npm run accounts-build && npm run admin-build && npm run copy-deps",
"deploy": "firebase deploy",
"clean": "rimraf \"dist/functions/**\" && rimraf \"dist/public\"",
"build-public": "cpx \"src/public/**/*.*\" \"dist/public\" -C",
"build-funcs": "babel \"src/functions\" --out-dir \"dist/functions\"",
"copy-deps": "cpx \"*{package.json,package-lock.json,yarn.lock}\" \"dist/functions\" -C",
"install-deps": "cd \"dist/functions\" && npm i"
}
}
firebase.json
{
"hosting": [
{
"target": "accounts",
"public": "dist/public",
"rewrites": [
{
"source": "**/**",
"function": "accounts"
}
]
},
{
"target": "admin",
"public": "dist/public",
"rewrites": [
{
"source": "**/**",
"function": "admin"
}
]
}
],
"functions": {
"source": "dist/functions"
}
}
.firebaserc
{
"projects": {
"default": "example-app"
},
"targets": {
"example-app": {
"hosting": {
"accounts": [
"example-accounts"
],
"admin": [
"example-admin"
]
}
}
}
}
在功能index.js
import {https} from 'firebase-functions'
const dev = process.env.NODE_ENV !== 'production'
const app = require('next')({dev, conf: {distDir: 'next'}})
const handle = app.getRequestHandler()
const accounts = https.onRequest((req, res) =>
app.prepare().then(() => handle(req, res)))
const admin = https.onRequest((req, res) =>
app.prepare().then(() => handle(req, res)))
export {accounts, admin}
next.config.js它移动到根文件夹
module.exports = {
distDir: '../../../dist/functions/next'
}
所有应用中呈现的默认帐户应用。想管理员渲染管理应用。
回答如下:当您在不同的文件夹作为管理员,占在你的应用程序目录,所以当你正在构建为他们每个人的next.js总是考虑你正在最后的构建和服务上次生成的页面,以便解决这个问题,我们有建立在不同的目录中建立admin的目录将是
DIST /功能/管理/下一
并为客户的目录将是
DIST /功能/帐号/下一个
你必须定义不同DISTDIR该如此,而服务页面它将在指定的目录,请改变你
next.config.js对admin
module.exports = {
distDir: '../../../dist/functions/admin/next'
}
next.config.js的账户
module.exports = {
distDir: '../../../dist/functions/accounts/next'
}
保持这种分别next.config.js在你的src /应用/管理和src /应用/用户目录,并改变你的
在功能index.js
import {https} from 'firebase-functions'
const dev = process.env.NODE_ENV !== 'production'
const appAdmin = require('next')({dev, conf: {distDir: 'admin/next'}});
const appAccounts= require('next')({dev, conf: {distDir: 'accounts/next'}});
const handle = app.getRequestHandler()
const accounts = https.onRequest((req, res) =>
appAccounts.prepare().then(() => handle(req, res)))
const admin = https.onRequest((req, res) =>
appAdmin.prepare().then(() => handle(req, res)))
export {accounts, admin}