【发布时间】:2022-02-15 06:35:50
【问题描述】:
我正在尝试转换现有的动态网页,其中从表格到高图表的所有内容都通过 js/html 代码插入,由 webpack 创建。 js、css、图片都已成功修改,正在通过ajax读取输入文件以填充网页。问题是供应商 js 文件。我不断在控制台中收到有关某些 js 文件函数的错误消息,这些函数未定义或未在 404 消息中找到。我已经阅读了文档并查看了供应商的现有帖子,所以它看起来不错,但它只是不起作用。
这是我最初在 html 文件中的内容:
<script type="text/javascript" src="js/jquery.min.1.8.2.js"></script>
<script type="text/javascript" src="js/underscore-min.js"></script>
<script type="text/javascript" src="js/react.js"></script>
<script type="text/javascript" src="js/papaparse.js"></script>
<script type="text/javascript" src="js/highcharts.js"></script>
<script type="text/javascript" src="js/modules/heatmap.js"></script>
<script type="text/javascript" src="js/modules/treemap.js"></script>
为了将其导入 webpack,我执行了以下操作:
index.htm(移除了 js 文件的脚本类型,因为 webpack 会为我包含它们)。
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="description" content="<%= htmlWebpackPlugin.options.metaDesc %>">
<title><%= htmlWebpackPlugin.options.title %></title>
</head>
index.js(这是 webpack 的主文件)。模块用于 highchart 并由 highchart.js 加载。
import {readInSoftwareVersions} from "./softwareList"
import "./styles.css"
import "./vendor/js/jquery.min.1.8.2.js"
import "./vendor/js/underscore-min.js"
import "./vendor/js/react.js"
import "./vendor/js/highcharts.js"
import "./vendor/js/highcharts-more.js"
import "./vendor/js/papaparse.js"
import "./vendor/js/modules/broken-axis.js"
import "./vendor/js/modules/broken-axis.src.js"
import "./vendor/js/modules/canvas-tools.js"
import "./vendor/js/modules/canvas-tools.src.js"
import "./vendor/js/modules/data.js"
import "./vendor/js/modules/data.src.js"
import "./vendor/js/modules/drilldown.js"
import "./vendor/js/modules/drilldown.src.js"
import "./vendor/js/modules/exporting.js"
import "./vendor/js/modules/exporting.src.js"
import "./vendor/js/modules/funnel.js"
import "./vendor/js/modules/funnel.src.js"
import "./vendor/js/modules/heatmap.js"
import "./vendor/js/modules/heatmap.src.js"
import "./vendor/js/modules/no-data-to-display.js"
import "./vendor/js/modules/no-data-to-display.src.js"
import "./vendor/js/modules/solid-gauge.js"
import "./vendor/js/modules/solid-gauge.src.js"
import "./vendor/js/modules/treemap.js"
import './images/lessErrors.png'
import './images/moreErrors.png'
import './images/noChange.png'
/*
Read in software list and then build web page.
*/
$(document).ready(function(){
readInSoftwareVersions(false); // wait for json to be read in
});
webpack.config.js - 我列出了所有的 js 文件。
module.exports = {
mode: 'development',
entry: {
main: "./src/index.js",
vendor: [
"./src/vendor/js/jquery.min.1.8.2.js",
"./src/vendor/js/underscore-min.js",
"./src/vendor/js/react.js",
"./src/vendor/js/highcharts.js",
"./src/vendor/js/highcharts-more.js",
"./src/vendor/js/papaparse.js",
"./src/vendor/js/modules/broken-axis.js",
"./src/vendor/js/modules/broken-axis.src.js",
"./src/vendor/js/modules/canvas-tools.js",
"./src/vendor/js/modules/canvas-tools.src.js",
"./src/vendor/js/modules/data.js",
"./src/vendor/js/modules/data.src.js",
"./src/vendor/js/modules/drilldown.js",
"./src/vendor/js/modules/drilldown.src.js",
"./src/vendor/js/modules/exporting.js",
"./src/vendor/js/modules/exporting.src.js",
"./src/vendor/js/modules/funnel.js",
"./src/vendor/js/modules/funnel.src.js",
"./src/vendor/js/modules/heatmap.js",
"./src/vendor/js/modules/heatmap.src.js",
"./src/vendor/js/modules/no-data-to-display.js",
"./src/vendor/js/modules/no-data-to-display.src.js",
"./src/vendor/js/modules/solid-gauge.js",
"./src/vendor/js/modules/solid-gauge.src.js",
"./src/vendor/js/modules/treemap.js",
"./src/vendor/js/modules/treemap.src.js"
]
},
output: {
filename: "main-[contenthash].js",
path: path.resolve(__dirname, "dist")
},
plugins: [
new HtmlWebpackPlugin({
hash: true,
title: 'Unit Test Results',
metaDesc: 'Display all the test results run on the select software version',
template: './src/index.htm',
filename: 'index.htm',
inject: 'body'
})
],
module: {
rules: [
{
test: /\.css$/,
use: [
"style-loader", // 2. Inject styles into DOM
"css-loader", // 1. Turns css into commonjs
]
},
{
test: /\.(png|jpg|gif)$/,
use: {
loader: "file-loader",
options: {
name: "./images/[name].[ext]",
}
}
},
]
}
};
此设置的 npm compile 没有错误。现在我认为 webpack 会处理依赖项,但我看到 modules/canvas-tools.js 说 highcharts AddEvent 未定义, papaparse.js 未找到,以及其他有关丢失或未声明的错误。基本上 js 依赖关系搞砸了。移动导入顺序修复了一个错误,但随后发生了一些其他依赖错误,因为模块中的 js 文件相互调用。
那我做错了什么?我需要一些供应商插件吗?目前我转储了供应商逻辑并将脚本类型行插入回 index.htm 以便它运行,但重点是使用 webpack 将 js 文件捆绑在一起。
【问题讨论】:
标签: javascript webpack vendor