为了账号安全,请及时绑定邮箱和手机立即绑定

Cannot read property 'entry' of undefined

var htmlWebpackPlugin = require('html-webpack-plugin');
//commom.js的模块化输出
module.exports={
	entry:{
		main:'./src/script/main.js',		
		a: './src/script/a.js',
		b: './src/script/b.js',
		c: './src/script/c.js'
	},//入口文件
	output:{
		path:'./dist',
		filename:'js/[name]-[chunkhash].js',
		// publicPath:"http://cdn.com/"
	},
	plugins:[
		new htmlWebpackPlugin({
			filename:'a.html',
			template:'index.html',
			title:"webapck is a",
			inject:'body',
			chunks:['main','a']
		 }),
		new htmlWebpackPlugin({
			filename:'b.html',
			template:'index.html',
			title:"webapck is b",
			inject:'body',
			chunks:['b']
		}),
		new htmlWebpackPlugin({
			filename:'c.html',
			template:'index.html',
			title:"webapck is c",
			inject:'body',
			chunks:['c']
		})
	]
};

除了a页面可以生成,b.html和c.html都有错误

Html Webpack Plugin:
<pre>
  TypeError: Cannot read property 'entry' of undefined
  
  - index.html:17237 
    D:/dwf/study/webpacklearn/index.html:17237:42
  
  - index.html:17240 module.exports
    D:/dwf/study/webpacklearn/index.html:17240:3
  
  - index.js:265 
    [webpacklearn]/[html-webpack-plugin]/index.js:265:16
  
  - util.js:16 tryCatcher
    [webpacklearn]/[bluebird]/js/release/util.js:16:23
  
  - promise.js:512 Promise._settlePromiseFromHandler
    [webpacklearn]/[bluebird]/js/release/promise.js:512:31
  
  - promise.js:569 Promise._settlePromise
    [webpacklearn]/[bluebird]/js/release/promise.js:569:18
  
  - promise.js:606 Promise._settlePromiseCtx
    [webpacklearn]/[bluebird]/js/release/promise.js:606:10
  
  - async.js:138 Async._drainQueue
    [webpacklearn]/[bluebird]/js/release/async.js:138:12
  
  - async.js:143 Async._drainQueues
    [webpacklearn]/[bluebird]/js/release/async.js:143:10
  
  - async.js:17 Immediate.Async.drainQueues
    [webpacklearn]/[bluebird]/js/release/async.js:17:14
  
</pre>


正在回答

14 回答

<script type="text/javascript">
   <%=
       compilation.assets[htmlWebpackPlugin.files.chunks.main.entry.substr(htmlWebpackPlugin.files.publicPath.length)].source()
   %>
</script>

在head中插入这段代码也不会生成b.html和c.html怎么办

0 回复 有任何疑惑可以回复我~

确实需要删除才可以

0 回复 有任何疑惑可以回复我~

遇到同样的问题!如果 index.html引用了js,需要删除,注释掉没有用。

9 回复 有任何疑惑可以回复我~
#1

慕粉4061747

通过删除解决了问题。为什么注释掉没用?是webpack打包时会读注释内容吗?
2017-04-11 回复 有任何疑惑可以回复我~
#2

米斯特teng

刚刚遇到相同问题,删除掉之前的script解决了,但为什么注释掉没有用,同问
2017-06-28 回复 有任何疑惑可以回复我~

inject:'body'改成inject:false,不要自动向index.html中插入js,然后在b和c页面的的插件配置中,chunks要引入'main',因为你的index.html有个直接引用的js,调用了 main.entry。然后加上excludeChunks:['a','c']和excludeChunks:['a','b'],排除掉不需要的chunk,就OK了

5 回复 有任何疑惑可以回复我~
首页上一页12下一页尾页

举报

0/150
提交
取消

Cannot read property 'entry' of undefined

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信