首页 > 解决方案 > Next.js 在启动应用程序时运行函数/脚本

问题描述

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

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

有没有更好的解决方案,只允许注册一个函数/回调以在应用程序启动时运行?我想一个可能的地方是next.config.js但我在可能的设置列表中看不到任何可能的东西。

标签: javascriptnext.js

解决方案


我猜你可以使用 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
    },
}

推荐阅读