挂钩 NextJS 服务器启动

问题描述 投票:0回答:3

如何挂钩 NextJS 服务器的启动,以便可以进行一次性初始化?

这里有一个讨论,但到目前为止还没有解决方案。

next.js config
3个回答
3
投票

只需将您的代码添加到

next.config.js
文件即可。

这样的事情应该可以解决问题:

//next.config.js
//imports

module.exports = async (phase, { defaultConfig }) => {
    const nextConfig = {...}
    console.log("Executes at server startup")
    return nextConfig
}

1
投票

我希望这个解决方案能够解决您的问题。

这是next JS中启动功能的示例,没有自定义服务器

该存储库无需使用自定义服务器即可运行启动功能。 下一个JS加载之前和之后,可以分别执行。

// before next loading

console.log(process.env.ENV_TEST, '[expected]: undefined') // undefined

// after next loading

const command = process.argv[2]
if (['dev', 'start'].includes(command)) {
  require('./node_modules/next/dist/bin/next')
  check(init)
}

// function
// function
// function

// next loading check
/** @param {Function} fn */
function check(fn) {
  setTimeout(() => {
    if (!('LOAD_CHECK' in process.env)) {
      setTimeout(check, 0, fn)
      return
    }
    fn()
  }, 50)
}

// after init function
function init() {
  switch (command) {
    case 'dev': {
      // here dev script
      console.log('run dev')
      break
    }
    case 'start': {
      // here start script
      console.log('run start')
      break
    }
  }
  // commons script
  console.log(process.env.ENV_TEST, '[expected]: Hello!!') // 'Hello!!'
}

有关更多信息,请参阅此存储库中的 app.js


0
投票

您可以使用nextjs官方文档中的instrumention

这基本上是,我们在项目根目录下名为 Instrumention (js/ts) 的文件中导出一个名为 register 的函数。如果您使用的话,请在 src/ 目录中。 Nextjs 会在服务器实例启动时查找该文件并调用该函数。

下面是示例 instrumention.ts 文件。

阅读完整文档 这里

import { init } from 'package-init'
 
export function register() {
  init()
}
© www.soinside.com 2019 - 2024. All rights reserved.