gpt4 book ai didi

node.js - html-webpack-plugin - 如何在不执行 EJS 模板的情况下插入 webpack bundle.js

转载 作者:太空宇宙 更新时间:2023-11-04 02:48:15 25 4
gpt4 key购买 nike

我尝试动态插入bundle.js而不执行EJS模板,但出现以下错误。有没有办法只插入 JS 而不执行 EJS 模板?

ERROR in Template execution failed: ReferenceError: description is not defined

ERROR in ReferenceError: description is not defined

我实际上是使用 Node 渲染模板,我只想将捆绑文件动态插入到 template.ejs 中

 res.status(200).render('template', 
{
description: description,
title:title
});

网络包配置:

  output: {
path: path.join(__dirname, 'dist'),
filename: "output.[hash].bundle.js",
publicPath: '/'
},
new HtmlWebpackPlugin({
inject: 'body',
template: 'views/template.ejs'
}),

模板.ejs

<!DOCTYPE html>
<html lang="en" class="ddhub-site">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="format-detection" content="telephone=no">
<meta description=<%=description%>/>
<title> <%= title %> </title>
</head>
<body></body>
</html>

最佳答案

我最终使用了一个简单的自定义插件,其中包含发布在 github 问题之一上的信息。

var fs = require("fs");
const path = require('path')

function UpdateBundleJsPlugin(options) {
// Setup the plugin instance with options...
}

UpdateBundleJsPlugin.prototype.apply = function(compiler) {
compiler.plugin("done", function(statsData) {
const stats = statsData.toJson();

if (!stats.errors.length) {
const htmlFileName = "search.ejs";
const html = fs.readFileSync(path.join('./views',htmlFileName), "utf8");

// need to read the final js bundle file to replace in the distributed index.html file
const asset = stats.assets[0];
let htmlOutput = html.replace(/static\/.*bundle\.js/, 'static/'+asset.name);

fs.writeFileSync(
path.join('./views', htmlFileName),
htmlOutput);
}
});
};

module.exports = UpdateBundleJsPlugin;

关于node.js - html-webpack-plugin - 如何在不执行 EJS 模板的情况下插入 webpack bundle.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43337587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com