How can I ignore a dependency in a project?
My project setting is:
Project A: depends on Angular2 & depends on Foundation
Project Foundation: depends on Redstone_mapper_mongo
The problem is I want to use angular2 in my Project A which depends on my Project Foundation. However the Project Foundation uses the redstone mapper mongo but angular2 and redstone mapper mongo dont work together.
Question:
So in my foundation is something like this. Can I just ignore these #Field(), #NotEmpty and the import somehow in Project A? So that angular works just fine in Project A? Therefore redstone mapper mongo shouldn't be loaded in Project A. But how can I do this?
import 'package:redstone_mapper/mapper.dart';
class Address {
#Field()
#NotEmpty()
String street;
#Field()
#NotEmpty()
String city;
}
[Update]
I have these dependencies in my project A now. I added
code_transformers: ^0.5.1
Project A pubspec.yaml
dependencies:
angular: "^4.0.0+2"
angular_forms: "^1.0.0"
foundation:
path: ../foundation
dependency_overrides:
code_transformers: ^0.5.1
dev_dependencies:
angular_test: ^1.0.0
browser: ^0.10.0
dart_to_js_script_rewriter: ^1.0.1
test: ^0.12.30
transformers:
- angular:
entry_points:
- web/main.dart
- test/**_test.dart
- test/pub_serve:
$include: test/**_test.dart
- dart_to_js_script_rewriter
Fondation pubspec.yaml
dependencies:
intl: "^0.15.2"
http: "^0.11.3+16"
great_circle_distance: "^1.0.1"
redstone_mapper_mongo: "0.2.0-beta.1"
jaguar_serializer: "^0.5.1"
dev_dependencies:
browser: "^0.10.0+2"
dart_to_js_script_rewriter: "^1.0.3"
transformers:
- dart_to_js_script_rewriter
In the Angular project adding
dependency_overrides:
code_transformers: ^0.5.1
analyzer: 0.30.0+4
should fix it
In the fondation project I added a local dependency of my own empty implementation
redstone_mapper_mongo:
path: ../redstone_mapper_mongo
And in this empty implementation the Field and NotEmpty annotations are just declared.
library redstone_mapper;
class Field {
const Field();
}
class NotEmpty {
const NotEmpty();
}
Like this it is possible now that Project A uses the local variant and Angular2 without any issues. And without creating a second world of model objects.
I used the dependency_overrides in my project B with the real version of redstone_mapper_mongo and so the annotations #Field and #Empty are using the real implementation of the redstone_mapper_mongo. And everything works fine now.
dependency_overrides:
redstone_mapper_mongo: "0.2.0-beta.1"
Related
In my flutter app I have been using these following plugin permission_handler, geolocator and google_api_availibility.
I could have added this plugin from flutter package from pubspec.yml, however, in my app i am using google_map_flutter plugin which has been using AndroidX support libraries. Due this reason I have added those library locally with some changes to work with AndroidX. So my app structure and pubspecs looks like this.
So in my app pubspecs.yml
dev_dependencies:
flutter_test:
sdk: flutter
permission_handler:
path: my_permission_handler
geolocator:
path: flutter-geolocator
My my_permission_handler's pubspecs.yml
flutter:
plugin:
androidPackage: com.baseflow.permissionhandler
pluginClass: PermissionHandlerPlugin
My api_availibility's pubspec.yml
flutter:
plugin:
androidPackage: com.baseflow.googleapiavailability
pluginClass: GoogleApiAvailabilityPlugin
My geolocator's pubspec.yml
dependencies:
meta: "^1.0.5"
flutter:
sdk: flutter
permission_handler:
path: ../my_permission_handler
google_api_availability:
path: ../flutter-google-api-availability
Now when in one of the project's classes I tried to import a model class from geolocator like this
but it shows this error The imported library 'package:geolocator/model/position.dart' can't have a part-of directive
I have no idea what I'm doing wrong here, please help me.
First of let's look into the code for package:geolocator/modles/position.dart
It says part of geolocator; at the very beginning of the file meaning this class is a part of the plugin which is exposed in the file package:geolocator/ like this part 'models/position.dart';. So here in your client code you don't need to import the class Position this way.
if you modify your import statement this way the error will be gone
import 'package:geolocator/geolocator.dart';
I hope it helps.
I want to use Dart in future for developing because its very functionally.
Ive started a Project but I am getting errors if i am impporting mysqljocky.
name: WebInterface
description: A web app for the popular minecraft plugin
version: 0.0.1
#homepage: https://www.example.com
#author: LarsE <email#example.com>
environment:
sdk: '>=1.24.0 <2.0.0'
dependencies:
angular: ^4.0.0
angular_components: ^0.8.0
sqljocky: ^0.14.1
dev_dependencies:
angular_test: ^1.0.0
browser: ^0.10.0
dart_to_js_script_rewriter: ^1.0.1
test: ^0.12.0
transformers:
- angular:
entry_points:
- web/main.dart
- test/**_test.dart
- test/pub_serve:
$include: test/**_test.dart
- dart_to_js_script_rewriter
# Uncomment the following in sdk 1.24+ to make pub serve
# use dartdevc (webdev.dartlang.org/tools/dartdevc).
#web:
# compiler:
# debug: dartdevc
I am getting everytime this error:
Working dir: E:\WebAuction\WebInterface
"C:\Program Files\Dart\dart-sdk\bin\pub.bat" get
Resolving dependencies...
Package dart_style has no versions that match >=0.2.10 <2.0.0 derived from:
- angular 4.0.0 depends on version >=0.1.8 <2.0.0
- code_builder 1.0.3 depends on version >=0.2.10 <2.0.0
Process finished with exit code 1
You can't access MySQL from code running in the browser.
This is why this attempt causes an error message.
This is not related to Dart, but how SQL databases work.
You need to expose a REST API or similar on a server that forwards queries and commands to the database running on the server.
Dart server frameworks like Aqueduct, Angel, Jaguar, Shelf, can be used for that, but the server doesn't need to be written in Dart. There are lots of other solutions.
From Angular you can access the REST API using HTTP requests.
I just started learning dart.
first I created an angular2-dart based project from https://angular.io/docs/dart/latest/quickstart.html and it worked properly.
now I want to add auth0-lock dart package from https://pub.dartlang.org/packages/auth0_lock, so I modified pubspec.yaml to the following:
name: go_dart_angular2_zingchart
description: Go Dart Angular2 with ZingChart Started Kit
version: 0.0.1
environment:
sdk: '>=1.13.0 <2.0.0'
dependencies:
angular2: ^2.0.0-beta.18
browser: ^0.10.0
dart_to_js_script_rewriter: ^1.0.1
auth0_lock: ^0.1.0
transformers:
- angular2:
platform_directives:
- 'package:angular2/common.dart#COMMON_DIRECTIVES'
platform_pipes:
- 'package:angular2/common.dart#COMMON_PIPES'
entry_points: client/web/main.dart
- dart_to_js_script_rewriter
and now when I execute pub get I get the following error:
Error on line 15, column 3 of ../../../.pub-cache/hosted/pub.dartlang.org/auth0_lock-0.1.0/pubspec.yaml: Error loading transformer "dart_to_js_script_rewriter": package "dart_to_js_script_rewriter" is not a dependency.
- dart_to_js_script_rewriter
^^^^^^^^^^^^^^^^^^^^^^^^^^
since I'm new to dart and not entirely sure what I'm doing.. I have no idea how to fix this :)
any ideas ?
thanks!
I get the same error when adding auth0_lock: ^0.1.0 to my dependencies and running pub get. The error message says that "dart_to_js_script_rewriter" is not a dependency in the pubspec.yaml of the auth0_lock package. It looks like it's added under dev_dependecies if you look here. Dev dependencies of any dependent packages are ignored. Pub only gets your package’s dev dependencies.
So I think this is a problem in their package.
So, what I did was I went to https://github.com/andresaraujo/auth0_lock.dart and cloned the package, added it into my own project root in a directory called auth0_lock. And then, in my pubspec.yaml i put:
auth0_lock:
path: auth0_lock
After that I can import it using
import 'package:auth0_lock/auth0_lock.dart';
I created new polymer dart project with dependences:
dependencies:
polymer: ^1.0.0-rc.2
web_components: ^0.12.0
polymer_elements: ^1.0.0-rc.1
browser: ^0.10.0
reflectable: ^0.3.1
dependency_overrides:
polymer_interop:
git:
ref: 0.2.0-rc1
url: https://github.com/dart-lang/polymer_interop.git
and everything worked fine (I can create new dom-module and use polymer elements). But then I tried to use exactly the same dependency configuration in existing project and when I run pub get I get:
Package reflectable has no versions that match >=0.3.1 <0.4.0 derived from:
- fbnn depends on version ^0.3.1
- polymer 1.0.0-rc.2 depends on version ^0.3.1
- polymer_elements 1.0.0-rc.1 depends on version ^0.3.1
I also try to do pub cache repair but it didn't help. Any ideas what might be wrong?
I am trying to get packages from the PUB with the following:
name: 'ch_padart'
version: 0.0.1
dependencies:
angular: "1.1.0"
angular_node_bind: any
polymer: ">=0.15.5+2 <0.16.0"
core_elements: ">=0.6.0+4 <0.7.0"
paper_elements: ">=0.6.1 <0.7.0"
web_components: ">=0.9.0 <0.11.0"
browser: ">=0.10.0+2 <0.11.0"
dev_dependencies:
unittest: ">=0.11.0+5 <0.12.0"
mock: ">=0.11.0+2 <0.12.0"
transformers:
- angular:
html_files:
- web/index.html
- polymer:
entry_points: web/index.html
lint: false
but the end result is always 'Connection closed before full header was received'
If you remove angular OR polymer (and elements) and then run pub get, there is no issue and all download and runs fine. No other warnings are displayed and --verbose yields nothing helpful that I can see.
When you run pub get -v from command line you will see that pub is working quite hard but can't find a compatible set of dependencies. There was a similar issue recently that the I guess the collection package was required in different dependencies with non-overlapping version constraints.
This is quite common when using Angular with Polymer.
You might need to investigate the dependencies manually to find the cause.
Maybe you get some feedback from pub get when you remove all dependency constraints and then start adding them again one by one.
the pubviz packages helps to resolve this kind of issue as well: https://pub.dartlang.org/packages/pubviz