WebPack output.library.type 变量未定义
WebPack output.library.type var is undefined
我正在使用简码学习 WebPack。在代码中,我们试图计算立方体和正方形。他们将假设按照以下 webpack.config.js.
存储在一个变量中
const webpack = require('webpack');
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const isDevelopment = process.env.NODE_ENV === 'development';
const config = {
entry: './src/index.ts',
output: {
path: path.resolve(__dirname, 'dist'),
library: {
type: 'var',
name: 'testVar'
},
filename: '[name].js'
},
mode: 'production',
plugins: [
new MiniCssExtractPlugin({
// Options similar to the same options in webpackOptions.output
// both options are optional
filename: "[name].css",
chunkFilename: "[id].css",
}),
new webpack.optimize.LimitChunkCountPlugin({
maxChunks: 1,
}),
new HtmlWebpackPlugin({
hash: true,
title: 'Video Player Play Ground',
myPageHeader: 'Sample Video Player',
template: './src/index.html',
filename: 'index.html'
})
],
module: {
rules: [
{
test: /\.s[ac]ss$/i,
exclude: /node_modules/,
use: [
// fallback to style-loader in development
MiniCssExtractPlugin.loader,
"css-loader",
"sass-loader",
],
},
{
test: /\.ts(x)?$/,
loader: 'ts-loader',
exclude: /node_modules/
},
{
test: /\.svg$/,
use: 'file-loader'
}
]
},
resolve: {
extensions: [
'.tsx',
'.ts',
'.js',
'.scss'
]
},
optimization: {
usedExports: true,
runtimeChunk: false,
minimize: false
}
};
module.exports = config;
如上面的配置所示,我们将编译后的javascript存储在名为“testVar”的变量中。
当我们使用以下命令行代码“webpack --mode production”时,上述方法工作正常
在最终生成的 javascript 文件中,我们有一行等于
testVar = webpack_exports;
此外,testVar.start 工作正常。
但是当我们使用以下命令行“webpack serve --mode production”或“webpack serve”时,上述方法不起作用
当我们运行一个本地服务器时,testVar.start是未定义的。我不确定我做错了什么。
以下是我们在 index.html 文件中调用启动函数的代码,我们在内部 javascript
中定义了该函数
window.onload = function (){
alert(testVar);
console.log(testVar);
if(testVar.start !== undefined)
{
alert(testVar.start);
console.log(testVar.start);
testVar.start(3,2);
}
else {
alert("Start Function is undefined");
}
}
下面还有来自 index.ts 和 math.ts 的代码见解。
import {cube, square} from './math';
export function start(c:number, s:number) {
console.log(cube(c));
console.log(square(s));
}
export function square(x:number) {
return x * x;
}
export function cube(x:number) {
return x * x * x;
}
enter image description here
终于,我成功了:-)。
我需要在 webpack.config.js
中添加以下行
devServer: {
injectClient: false
},
参考如下URL:https://github.com/webpack/webpack-dev-server/issues/2484
别忘了投票。谢谢
我正在使用简码学习 WebPack。在代码中,我们试图计算立方体和正方形。他们将假设按照以下 webpack.config.js.
存储在一个变量中 const webpack = require('webpack');
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const isDevelopment = process.env.NODE_ENV === 'development';
const config = {
entry: './src/index.ts',
output: {
path: path.resolve(__dirname, 'dist'),
library: {
type: 'var',
name: 'testVar'
},
filename: '[name].js'
},
mode: 'production',
plugins: [
new MiniCssExtractPlugin({
// Options similar to the same options in webpackOptions.output
// both options are optional
filename: "[name].css",
chunkFilename: "[id].css",
}),
new webpack.optimize.LimitChunkCountPlugin({
maxChunks: 1,
}),
new HtmlWebpackPlugin({
hash: true,
title: 'Video Player Play Ground',
myPageHeader: 'Sample Video Player',
template: './src/index.html',
filename: 'index.html'
})
],
module: {
rules: [
{
test: /\.s[ac]ss$/i,
exclude: /node_modules/,
use: [
// fallback to style-loader in development
MiniCssExtractPlugin.loader,
"css-loader",
"sass-loader",
],
},
{
test: /\.ts(x)?$/,
loader: 'ts-loader',
exclude: /node_modules/
},
{
test: /\.svg$/,
use: 'file-loader'
}
]
},
resolve: {
extensions: [
'.tsx',
'.ts',
'.js',
'.scss'
]
},
optimization: {
usedExports: true,
runtimeChunk: false,
minimize: false
}
};
module.exports = config;
如上面的配置所示,我们将编译后的javascript存储在名为“testVar”的变量中。
当我们使用以下命令行代码“webpack --mode production”时,上述方法工作正常
在最终生成的 javascript 文件中,我们有一行等于 testVar = webpack_exports;
此外,testVar.start 工作正常。
但是当我们使用以下命令行“webpack serve --mode production”或“webpack serve”时,上述方法不起作用 当我们运行一个本地服务器时,testVar.start是未定义的。我不确定我做错了什么。
以下是我们在 index.html 文件中调用启动函数的代码,我们在内部 javascript
中定义了该函数 window.onload = function (){
alert(testVar);
console.log(testVar);
if(testVar.start !== undefined)
{
alert(testVar.start);
console.log(testVar.start);
testVar.start(3,2);
}
else {
alert("Start Function is undefined");
}
}
下面还有来自 index.ts 和 math.ts 的代码见解。
import {cube, square} from './math';
export function start(c:number, s:number) {
console.log(cube(c));
console.log(square(s));
}
export function square(x:number) {
return x * x;
}
export function cube(x:number) {
return x * x * x;
}
enter image description here
终于,我成功了:-)。 我需要在 webpack.config.js
中添加以下行devServer: {
injectClient: false
},
参考如下URL:https://github.com/webpack/webpack-dev-server/issues/2484
别忘了投票。谢谢