作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
尝试将正常运行的 angular2 typescript 应用程序迁移到 webpack 后,出现以下运行时错误
app.js:38016Uncaught ReferenceError: __decorate is not defined
炸毁那一行的代码是这样的
NpnPortalService = __decorate([
core_1.Injectable(),
__metadata('design:paramtypes', [http_1.Http])
], NpnPortalService);
当我进行构建时,Webpack 不会提示,我也没有看到任何 typescript 编译错误。这是我的 webpack.config.js
module.exports = {
entry: {
app: "./app/boot",
polyfills: ['./node_modules/es6-shim/es6-shim.min.js', './node_modules/zone.js/dist/zone.min.js']
},
output: {
path: __dirname + '/dist',
filename: "[name].js"
},
resolve: {
extensions: ['', '.js', '.ts']
},
module: {
loaders: [{
test: /\.ts/, loader: 'ts-loader', exclude: /node_modules/
}],
noParse: [ './node_modules/es6-shim/es6-shim.min.js' ]
}
};
这是我的 tsconfig.js
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"sourceMap": true,
"noEmitHelpers": true
},
"files": [
"app.component.ts",
"../node_modules/angular2/typings/browser.d.ts"
],
"compileOnSave": false,
"buildOnSave": false
}
这是我的 index.html
<!DOCTYPE html>
<html>
<head>
<script src="https://code.angularjs.org/2.0.0-beta.0/angular2-polyfills.js"></script>
<!-- Set the base href -->
<script>document.write('<base href="' + document.location + '" />');</script>
<title>NPN Data Download Tool</title>
<script src="dist/polyfills.js"></script>
<!-- Google Maps Initialization -->
<script>
function initMap() {
var mapDiv = document.getElementById('map_canvas');
console.log(mapDiv.getAttribute("intialized"));
if (!mapDiv.getAttribute("intialized")) {
console.log("intializing google map");
var map = new google.maps.Map(mapDiv, {
center: {lat: 40.750289, lng: -89.583163},
zoom: 5
});
map.enableKeyDragZoom();
var dz = map.getDragZoomObject();
google.maps.event.addListener(dz, "dragend", function(bnds) {
document.getElementById("ObservationBottomLeftX1").value = bnds.getSouthWest().lat();
document.getElementById("ObservationBottomLeftY1").value = bnds.getSouthWest().lng();
document.getElementById("ObservationUpperRightX2").value = bnds.getNorthEast().lat();
document.getElementById("ObservationUpperRightY2").value = bnds.getNorthEast().lng();
document.getElementById("necoords").innerHTML = "<span style='font-weight:bold'>North East Corner</span>: " + bnds.getNorthEast().lat() + ", " + bnds.getNorthEast().lng();
document.getElementById("swcoords").innerHTML = "<span style='font-weight:bold'>South West Corner</span>: " + bnds.getSouthWest().lat() + ", " + bnds.getSouthWest().lng();
});
google.maps.event.addListener(map, 'zoom_changed',
function() {
if (map.getZoom() < 3) {
map.setZoom(3);
};
});
document.getElementById('map_canvas').setAttribute("intialized", true);
}
}
</script>
<script src="https://maps.googleapis.com/maps/api/js"></script>
<script src="./keydragzoom.js" type="text/javascript"></script>
</head>
<body>
<my-app>loading...</my-app>
</body>
<script src="dist/app.js"></script>
<!-- Bootstrap -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<!-- Override Bootstrap css here -->
<link rel="stylesheet" href="styles.css">
</html>
最佳答案
从您的 tsconfig 中删除 "noEmitHelpers": true
关于Angular2 + Webpack UncaughtReferenceError __decorate 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36848428/
尝试将正常运行的 angular2 typescript 应用程序迁移到 webpack 后,出现以下运行时错误 app.js:38016Uncaught ReferenceError: __deco
我是一名优秀的程序员,十分优秀!