Comments (2)
Never mind. The problem was not in this babel plugin, simply had some wired behaviour in getting this stuff working with webpack, typescript and awesome-typescript-loader. For everyone looking around for a configuration here is mine:
// tsconfig.js
{
...
"awesomeTypescriptLoaderOptions": {
"useBabel": true,
"babelOptions": {
"plugins": ["angularjs-annotate"],
"presets": ["es2015"]
}
}
}
Don't try to chain awesome-typescript-loader
with babel-loader
this will create the above described error.
from babel-plugin-angularjs-annotate.
Extended ES6 classes seem to work fine.
class foo extends bar {
constructor($scope){
"ngInject";
super();
}
}
new foo();
Yields
"use strict";
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
var foo = function (_bar) {
foo.$inject = ["$scope"];
_inherits(foo, _bar);
function foo($scope) {
"ngInject";
_classCallCheck(this, foo);
return _possibleConstructorReturn(this, Object.getPrototypeOf(foo).call(this));
}
return foo;
}(bar);
new foo();
In this example, $inject
is defined before _inherits(foo,_bar)
is called.
I don't quite understand why this isn't happening with awesome-typescript-loader
, but there may be nothing that we can do about it (particularly if the TS loader is invoked after Babel).
If you don't have any objections, I'm going to close this, as I'm not sure there's anything else to do at this point.
from babel-plugin-angularjs-annotate.
Related Issues (20)
- Support for @ngInject within JSDoc blocks HOT 2
- 0.8.2 is extremely slow HOT 5
- $inject is not added on exported class when transforming to ES5 HOT 1
- Remove prologue string? HOT 1
- Any way to catch babel-renamed function arguments? HOT 3
- "Module 'xxx' is not available!" errors when converting from ngAnnotate HOT 2
- babel 7 support HOT 8
- Not working when some property of the class has a Decorator HOT 2
- Unexpected token HOT 2
- Question not issue babel-plugin-angularjs-annotate for replace ng-annotate with grunt HOT 3
- Method names can shadow import names HOT 1
- Option for a decorator HOT 1
- doesn't work with babel-core >= 7.0 HOT 1
- Project with angular and vue code
- codeFrame is not a function
- Cannot set property $inject of function SomeController which has only a getter HOT 6
- Can not inject dependencies on class when declared on an object property
- Underscore "_" breaks annotations when "@babel/plugin-proposal-class-properties" is used
- What does "Declarator name different _elementReadyDirectiveFactory" actually indicate?
- Unit tests failing since `@babel/plugin-transform-classes` 7.16.5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from babel-plugin-angularjs-annotate.