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

执行npm run build构建EJS项目报错:缺失build脚本,求正确配置

解决EJS项目npm run build无有效脚本的问题

EJS本身没有像React那样自带的react-scripts build这类官方build命令,它只是模板引擎,需要借助工具把EJS模板编译成可部署的静态HTML文件,给你两个可行方案:

方案一:使用ejs-cli快速编译

  1. 先安装ejs-cli开发依赖:
npm install ejs-cli --save-dev
  1. 修改package.json里的scripts,根据你的项目结构调整路径:
    比如你的EJS模板放在src/views目录下,想把编译后的HTML输出到dist目录,就这么写:
"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "ejs src/views/*.ejs -o dist"
  }
  • 参数说明:-o指定输出目录;如果你的模板需要传入数据,还可以加-d data.json(比如项目根目录有data.json数据文件)。

方案二:自定义Node脚本(更灵活)

如果需要更复杂的编译逻辑(比如遍历子目录、动态传参),可以自己写Node脚本:

  1. 先安装ejs依赖:
npm install ejs --save-dev
  1. 在项目根目录新建build.js文件,写入以下示例代码(根据你的项目结构调整路径):
const ejs = require('ejs');
const fs = require('fs');
const path = require('path');

// 配置模板目录和输出目录
const templateDir = path.join(__dirname, 'src/views');
const outputDir = path.join(__dirname, 'dist');

// 确保输出目录存在
if (!fs.existsSync(outputDir)) {
  fs.mkdirSync(outputDir, { recursive: true });
}

// 遍历并编译所有EJS文件
function compileTemplates(dir) {
  fs.readdirSync(dir, { withFileTypes: true }).forEach(file => {
    const fullPath = path.join(dir, file.name);
    if (file.isDirectory()) {
      // 递归处理子目录
      const subOutputDir = path.join(outputDir, file.name);
      if (!fs.existsSync(subOutputDir)) fs.mkdirSync(subOutputDir);
      compileTemplates(fullPath);
    } else if (path.extname(file.name) === '.ejs') {
      // 编译EJS模板为HTML
      ejs.renderFile(fullPath, { 
        // 这里可以传入全局数据,比如网站标题
        siteTitle: '我的EJS项目'
      }, (err, content) => {
        if (err) throw err;
        const outputPath = path.join(outputDir, path.basename(fullPath, '.ejs') + '.html');
        fs.writeFileSync(outputPath, content);
        console.log(`已编译:${file.name} -> ${outputPath}`);
      });
    }
  });
}

compileTemplates(templateDir);
  1. 修改package.json的scripts:
"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "node build.js"
  }

完成以上配置后,执行npm run build就能把EJS模板编译成静态HTML文件,直接部署dist目录里的文件即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 19:22:59