You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用HereDoc自动化create-next-app失败,原因何在?

为什么用HereDoc自动化执行npx create-next-app@latest会失败?

你尝试用HereDoc批量回答create-next-app的交互式提问,执行命令如下:

> npx create-next-app@latest <<EOF
app1
No
Yes
Yes
Yes
Yes
Yes
@/*
EOF

但终端输出显示所有输入被合并成了一行:

? What is your project named? › app1NoYesYesYesYesYes@/*% 

导致无法正常创建Next.js项目,而正常流程是分步骤依次提问并回答的。

问题原因

create-next-app依赖**交互式终端工具(比如Inquirer.js)**来收集配置选项,这类工具会直接读取终端的TTY(交互式终端设备)输入,而非普通的管道输入。HereDoc本质是通过管道将内容传递给命令,但交互式工具不会识别管道输入里的换行符,会把所有内容当作一个连续的输入流一次性读取,最终所有回答被合并成了一行,自然无法匹配各个提问的要求。

解决方法

要自动化创建Next.js项目,不用HereDoc,直接用命令行参数或非交互式模式即可:

1. 直接用命令行参数指定所有配置

对应你想要的选项,执行以下命令就能一键创建:

npx create-next-app@latest app1 --no-typescript --eslint --tailwind --src-dir --app --import-alias "@/*"

各参数对应你的选择:

  • app1:项目名称
  • --no-typescript:不使用TypeScript
  • --eslint:启用ESLint
  • --tailwind:启用Tailwind CSS
  • --src-dir:使用src/目录
  • --app:启用App Router
  • --import-alias "@/*":配置导入别名@/*

2. 用配置文件配合非交互式模式

如果参数太多,可先创建一个create-next-app.config.js配置文件:

module.exports = {
  typescript: false,
  eslint: true,
  tailwind: true,
  srcDir: true,
  appDir: true,
  importAlias: "@/*",
};

然后执行命令,--yes会跳过交互式提问,直接读取配置文件完成创建:

npx create-next-app@latest app1 --yes

内容的提问来源于stack exchange,提问作者LittleTeemo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 20:40:02