Kyl*_*yle 9 javascript angularjs typescript webpack
尝试要求一个html文件时,我有一个奇怪的错误.有问题的代码是一个用typescript编写并使用webpack的AngularJs应用程序.
app.directive.ts
// require('./app.scss');
// import AppController from './app.controller';
function AppDirective(): ng.IDirective {
return {
restrict: 'E',
scope: {},
controllerAs: 'vm',
// controller: AppController,
controller: () => {},
// template: require('./app.html')
template: '<div>this is a test</div>'
}
}
angular
.module('myApp')
.directive('appDirective', AppDirective);
Run Code Online (Sandbox Code Playgroud)
app.controller.ts
export default class AppController {
public static $inject = ['$scope'];
constructor(private $scope) {
}
}
Run Code Online (Sandbox Code Playgroud)
app.html
<div>
THIS IS A TEST, REMAIN CALM
</div>
Run Code Online (Sandbox Code Playgroud)
app.scss是空的.
现在,实际上,包含注释,此代码在webpack中构建时没有错误,并将使用webpack dev服务器进行部署.
使用webpack dev服务器,它允许您在服务器运行时更改代码并重新加载它,我可以取消注释任何/所有注释行,它将正常工作.
但是,如果我关闭开发服务器并重建,它将无法给出此错误:
未捕获的TypeError:无法读取未定义的属性"call"
Uncaught TypeError: Cannot read property 'call' of undefined__webpack_require__ @ bootstrap 9163605…:50
webpackJsonp.152 @ app.ts:2__webpack_require__ @ bootstrap 9163605…:50
webpackJsonp.153 @ main.browser.ts:1__webpack_require__ @ bootstrap 9163605…:50
webpackJsonp.0 @ main.bundle.js:7__webpack_require__ @ bootstrap 9163605…:50
Run Code Online (Sandbox Code Playgroud)
webpackJsonpCallback @ bootstrap 9163605 ...:21(匿名函数)@main.bundle.js:1
在webpack中的这一行失败:boostrap文件:
modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
Run Code Online (Sandbox Code Playgroud)
尝试取消注释app.scss行,控制器行或app.html行时会发生此错误.只有在重建之后才会发生这种情况,其中任何或所有行都未注释.
我正在使用webpack构建,并在tsconfig中使用commonjs进行模块加载,我在webpack.config中为这些类型的文件提供了以下webpack加载器:
{
test: /\.ts$/,
loader: 'awesome-typescript-loader',
exclude: [/\.(spec|e2e)\.ts$/]
},
{
test: /\.scss$/,
loader: 'style-loader!css-loader!sass-loader'
},
{
test: /\.html$/,
loader: 'raw-loader',
exclude: [helpers.root('src/index.html')]
},
Run Code Online (Sandbox Code Playgroud)
我一直在使用角度js和打字稿,但这是第一次启动我自己的项目,而且我仍然在webpack中磕磕绊绊.
我很困惑,为什么这个代码在它运行时插入它会起作用,但是在重建后停止工作.我认为它与我的webpack配置有关,但我无法弄明白,我已经坚持了一段时间.任何帮助,将不胜感激.
更新 我发现原因,但不是解决方案.它似乎是由我的webpack配置中的CommonsChunkPlugin引起的:
new webpack.optimize.CommonsChunkPlugin({
name: helpers.reverse(['polyfills', 'vendor', 'main']),
// minChunks: Infinity
}),
Run Code Online (Sandbox Code Playgroud)
如果我删除插件错误消失,但我不再有这个插件.
更新2
将插件初始化更改为此可修复此问题:
new webpack.optimize.CommonsChunkPlugin({
names: ['polyfills', 'vendor', 'main'],
minChunks: 2
}),
Run Code Online (Sandbox Code Playgroud)
但我仍然不明白为什么
根据 Zze 的建议发布更新 #2 作为答案。
将插件初始化更改为此可以解决问题:
new webpack.optimize.CommonsChunkPlugin({
names: ['polyfills', 'vendor', 'main'],
minChunks: 2
}),
Run Code Online (Sandbox Code Playgroud)
但我还是不明白为什么
| 归档时间: |
|
| 查看次数: |
9938 次 |
| 最近记录: |