Mam dziwny błąd, gdy próbuję wymagać pliku html. Kod, o którym mowa, to aplikacja AngularJs napisana maszynowo i przy użyciu pakietu internetowego.Uncaught TypeError: Nie można odczytać właściwości 'call' z undefined po odbudowaniu pakietu sieciowego CommonsChunkPlugin
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);
app.controller.ts
export default class AppController {
public static $inject = ['$scope'];
constructor(private $scope) {
}
}
app.html
<div>
THIS IS A TEST, REMAIN CALM
</div>
app.scss jest pusty.
Tak, jak to jest, komentarze włączone, ten kod buduje się bez błędów w pakiecie sieci Web i zostanie wdrożony za pomocą serwera deweloperskiego.
Podczas korzystania z serwera deweloperskiego Webpack, który pozwala na zmianę kodu podczas pracy serwera i ponowne ładowanie go na żywo, mogę odkomentować dowolne/wszystkie skomentowane linie i będzie działać poprawnie.
Jednakże, jeśli mogę wyłączyć serwer dev i odbudować, to nie daje ten błąd:
Uncaught TypeError: Cannot read property 'call' of undefined
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
webpackJsonpCallback @ bootstrap 9163605 ...: 21 (funkcja anonimowa) @ main.bundle.js: 1
nie na tej linii w WebPacka: boostrap plik:
modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
Ten błąd występuje, podczas próby odkomentowania linii app.scss, linii kontrolera lub linii app.html. Dzieje się tak tylko po przebudowie, z pominięciem którejkolwiek linii lub wszystkich linii.
Używam WebPACK budować, a commonjs modułu załadunku w tsconfig, i mam następujące ładowarki WebPACK w webpack.config dla tych typów plików:
{
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')]
},
Używam kątowe js i maszynopis przez chwilę, ale po raz pierwszy rozpoczynam mój własny projekt, a ja wciąż natknę się na webpack.
Jestem bardzo zdezorientowany, dlaczego ten kod zadziała, jeśli wstawię go, gdy jest uruchomiony, ale potem przestanie działać po przebudowie. Myślę, że ma to coś wspólnego z moją konfiguracją Webpack, ale nie jestem w stanie tego rozgryźć i utknąłem na tym przez jakiś czas. Każda pomoc będzie doceniona.
UPDATEZnalazłem przyczynę, ale nie rozwiązanie. Wydaje się być spowodowane przez CommonsChunkPlugin w moim WebPACK config:
new webpack.optimize.CommonsChunkPlugin({
name: helpers.reverse(['polyfills', 'vendor', 'main']),
// minChunks: Infinity
}),
Gdybym wyjąć wtyczkę znika błąd, ale nie mam już tej wtyczki.
UPDATE 2
Zmiana inicjalizacji Plugin ten rozwiązuje problem:
new webpack.optimize.CommonsChunkPlugin({
names: ['polyfills', 'vendor', 'main'],
minChunks: 2
}),
Ale ja nadal nie rozumiem, dlaczego
„będzie działać prawidłowo” można zdefiniować, co to znaczy? Co to jest wynik, gdy "działa poprawnie"? –
teraz tylko pusta strona przedstawiająca: jedna ryba dwie ryby czerwone ryby niebieski ryb Loading ... To jest test, zachować spokój gdy nie jest to praca pokazuje {{dane }} Ładowanie ... Tak więc angularjs przestał działać w drugim przypadku – Kyle
mógł być tak prosty jak nazwa -> nazwy, które były przyczyną problemu – Kyle