当前位置: 首页 > 知识库问答 >
问题:

webpack的html模板是.html文件报错,改成.ejs后缀就好了,为什么?

陆飞捷
2023-12-26

package.json

  "scripts": {    "start": "webpack-dev-server --config webpack.dev.js"  },  "devDependencies": {    "file-loader": "^6.2.0",    "html-webpack-plugin": "^3.2.0",    "webpack": "^4.47.0",    "webpack-cli": "^3.3.10",    "webpack-dev-server": "^3.10.1"  },

webpack.dev.js

  plugins: [    new HtmlWebpackPlugin({      filename: 'index.html',      template: path.resolve(__dirname, './public/template.html'),    })  ]

模板文件是.html时,跑起来报错,把后缀名改成.ejs就好了,为什么?

共有1个答案

鲜于玮
2023-12-26

这个问题涉及到Webpack的配置和模板引擎的处理。

首先,Webpack的HtmlWebpackPlugin插件默认使用html-loader来处理HTML文件。html-loader可以将HTML文件中的requireimport语句嵌入到输出的HTML文件中。默认情况下,html-loader会尝试解析和内联所有.js.css.png.gif.jpg文件。

然而,对于非HTML文件,例如.ejs文件,html-loader可能无法正确处理。因此,当你的模板文件是.html时,可能会出现解析错误。

另一方面,当你将模板文件的后缀改为.ejs时,Webpack可能使用了另一种加载器来处理这个文件,例如ejs-loader(如果你已经在项目中安装了它)。Ejs-loader是用于处理EJS模板的加载器,它能够正确解析和内联EJS文件中的内容。

因此,如果你想继续使用.html作为模板文件的扩展名,你可以尝试在webpack配置中明确指定使用html-loader来处理HTML文件。例如:

plugins: [  new HtmlWebpackPlugin({    filename: 'index.html',    template: path.resolve(__dirname, './public/template.html'),    loader: 'html-loader' // 明确指定使用html-loader  })]

另外,请确保你的项目中已经安装了html-loader。如果没有,你可以通过运行以下命令来安装它:

npm install --save-dev html-loader

希望这可以帮助你解决问题!如果你还有其他问题,请随时提问。

 类似资料:
  • 我有一个项目,使用Twig模板。它中的所有数据都是静态的,但为了清晰起见,我在其他twig文件中分离了页面的部分(否则一个文件中会有数百行标记)。 views/welcome/hello.html 现在我想做的是使用webpack捆绑任何js、css,并使用HTML webpack插件创建HTML页面,并将这些样式和脚本注入: 在我的dist/index.html中,我希望得到这样的结果,生成的h

  • 问题内容: 我正在尝试使用Webpack设置一个有角度的项目,但是我不知道如何从html模板中引用图像并将其包含在构建中。 我的项目树如下: 我正在尝试与和一起使用,但这只是没有发生。 这是一个示例模板: 问题#1 :我希望能够参考相对于的图片。现在,路径需要相对于模板文件,这将变得非常丑陋()。 问题2 :即使我指定了相对路径(如我上面所做的那样),项目也可以成功构建,但实际上没有任何反应。路径

  • 当执行 this.write 报错的时候,catch到错误以后还生成了 filename 这个文件,这里能有什么设置可以让出错的时候不生成文件,我现在只有加上 fs.unlink去手动删除。

  • 修改默认模板 新建 src/pages/document.ejs,umi 约定如果这个文件存在,会作为默认模板,内容上需要保证有 <div id="root"></div>,比如: <!doctype html> <html> <head> <meta charset="utf-8" /> <title>Your App</title> </head> <body> <div id="

  • 4.6. 文本和HTML模板 前面的例子,只是最简单的格式化,使用Printf是完全足够的。但是有时候会需要复杂的打印格式,这时候一般需要将格式化代码分离出来以便更安全地修改。这些功能是由text/template和html/template等模板包提供的,它们提供了一个将变量值填充到一个文本或HTML格式的模板的机制。 一个模板是一个字符串或一个文件,里面包含了一个或多个由双花括号包含的{{ac