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但我在可能的设置列表中看不到任何可能的东西。
解决方案
我猜你可以使用 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
},
}
推荐阅读
- javascript - 将对象数组转换为转置的对象数组
- linux - 在 Centos 上构建,安装 PerlIO::gzip 时出现 Zlib.h 错误
- javascript - Vue 和 rails:共享 cookie
- java - 如何在 android/java 中恢复新实例
- android - java.lang.RuntimeException:IllegalAccessException
- python - 在前几行上打印
- java - 在应用程序模块中使用库模块的依赖项
- java - Files.write(Path,byte[]) 上的 java.nio.channels.ClosedByInterruptException
- python - 按列表中的顺序对字典进行排序(python)
- python - 使用 matplotlib 针对相同的 x 轴在数据框的其他列的条件下绘制列值