TL; DR; Я следую примеру NextJS с использованием Firebase, и с минимальными изменениями я не могу нажать на Firebase.
Я следую with-firebase от NextJS пример -hosting-and-typescript и в соответствии с помощью # 8893.
Я изменил сценарий deploy
в package.json
на cross-env NODE_ENV=production firebase deploy
.
Я также изменил значение conf
в functions/index.ts
на
conf: {
distDir: `${path.relative(process.cwd(), __dirname)}/../functions/next`
}
Когда я перехожу к развертыванию приложения на firebase, я получаю сообщение об ошибке
Ошибка развертывания. Ошибка при настройке среды выполнения для вашей функции. Повторите развертывание через несколько минут.
Я сделал некоторую отладку, и если я закомментирую строку
const app = next({ dev, conf: { distDir: `${path.relative(process.cwd(), __dirname)}/../functions/next` }
})
в functions/index.ts
, тогда функции будут развернуты нормально. Итак, проблема, похоже, связана с next()
Вот код functions/index.ts
, это вызывает ошибку.
import * as functions from 'firebase-functions'
import next from 'next'
import * as path from 'path'
const appSetup = {
dev: process.env.NODE_ENV !== 'production',
conf: { distDir: `${path.relative(process.cwd(), __dirname)}/../functions/next` }
}
console.log("appSetup: ", appSetup)
const app = next(appSetup)
// const handle = app.getRequestHandler()
export const nextApp = functions.https.onRequest(async(req, res) => {
// return app.prepare().then(() => handle(req, res))
return res.send({ status: "Hello from Firebase!, nextApp" })
})
Вот код functions/index.ts
, это НЕ вызывает ошибку
import * as functions from 'firebase-functions'
import next from 'next'
import * as path from 'path'
const appSetup = {
dev: process.env.NODE_ENV !== 'production',
conf: { distDir: `${path.relative(process.cwd(), __dirname)}/../functions/next` }
}
console.log("appSetup: ", appSetup)
// const app = next(appSetup)
// const handle = app.getRequestHandler()
export const nextApp = functions.https.onRequest(async(req, res) => {
// return app.prepare().then(() => handle(req, res))
return res.send({ status: "Hello from Firebase!, nextApp" })
})
in package.json
"firebase-admin": "^8.10.0",
"firebase-functions": "^3.6.0",
"next": "^9.3.5",
"react": "16.13.1",
"react-dom": "16.13.1"