Next.js 启动应用程序时运行函数/脚本

Dav*_*784 15 javascript next.js

我有一个(服务器端)函数,我想在第一次启动我的 next.js 服务器时运行。通常我会做这样的事情在我的package.json脚本定义:node ./path/to/script.js && next start。但是有问题的脚本从“webpacked”代码中导入了几个资源,所以这并不容易。(我知道可以使用 开启 node.js 中的 es6 支持--experimental-modules,但这会带来它自己的问题,我宁愿不去那个兔子洞)

到目前为止,我拥有的最佳解决方案是创建一个 api 端点来运行这些脚本,然后在启动后手动点击该端点。但是这样做似乎是一种黑客行为,如果有人发现它,这个端点可能会被用于某种 DoS 攻击。

有没有更好的解决方案,只允许在应用程序启动时注册要运行的函数/回调?我认为可能的位置是next.config.js,但我在可能的设置列表中看不到任何可能的内容。

Ita*_*res 0

我想您可以使用 next.config 文件上的 webpack 配置来注册新插件并在构建完成后运行它。

module.exports = {
    webpack: (config, options) => {
        config.plugins.push(
            {
                apply: (compiler) => {
                    compiler.hooks.afterEmit.tap('AfterEmitPlugin', (compilation) => {
                        console.log(".. Run after build")
                    });
                }
            }    
        )
        return config
    },
}
Run Code Online (Sandbox Code Playgroud)