TSC Σφάλμα μεταγλώττισης σε γωνιακή όταν εξαρτήσεις είναι έξω από το φάκελο node_modules

ψήφοι
0

Προσπαθώ να μεταναστεύσουν γωνιακή 1 Κωδικός μου για γωνιακή 2. και τώρα bootstrap app μου σε υβριδικό way.I έχουν γωνιακή 2 αρχεία config μου μέσα node_modules φάκελο. Θέλω να μετακινήσετε αυτά τα αρχεία στο εσωτερικό της δημόσιας / περιουσιακά στοιχεία / plugins folder.when i κινηθεί αντανακλούν-μεταδεδομένων και zone.js αρχεία εκτός του φακέλου node_modules και την κατάρτιση του κώδικα χρησιμοποιώντας TSC εντολή δίνει ακόλουθα σφάλματα.

public/assets/plugins/reflect-metadata/test/reflect-definemetadata.ts(5,24):error TS2307: Cannot find module 'chai'.
public/assets/plugins/reflect-metadata/test/reflect-definemetadata.ts(7,1): error TS2304: Cannot find name 'describe'.
public/assets/plugins/reflect-metadata/test/reflect-definemetadata.ts(8,5): error TS2304: Cannot find name 'it'.
public/assets/plugins/reflect-metadata/test/reflect-definemetadata.ts(12,5): error TS2304: Cannot find name 'it'.
public/assets/plugins/reflect-metadata/test/reflect-definemetadata.ts(16,5): error TS2304: Cannot find name 'it'.
public/assets/plugins/reflect-metadata/test/reflect-deletemetadata.ts(5,24): error TS2307: Cannot find module 'chai'.
public/assets/plugins/reflect-metadata/test/reflect-deletemetadata.ts(7,1): error TS2304: Cannot find name 'describe'.
public/assets/plugins/reflect-metadata/test/reflect-deletemetadata.ts(8,5): error TS2304: Cannot find name 'it'.
public/assets/plugins/reflect-metadata/test/reflect-deletemetadata.ts(12,5): error TS2304: Cannot find name 'it'.
public/assets/plugins/reflect-metadata/test/reflect-deletemetadata.ts(18,5): error TS2304: Cannot find name 'it'.
public/assets/plugins/reflect-metadata/test/reflect-deletemetadata.ts(25,5): error TS2304: Cannot find name 'it'.
public/assets/plugins/reflect-metadata/test/reflect-deletemetadata.ts(33,5): error TS2304: Cannot find name 'it'.
public/assets/plugins/reflect-metadata/test/reflect-getmetadata.ts(5,24): error TS2307: Cannot find module 'chai'.
public/assets/plugins/reflect-metadata/test/reflect-getmetadata.ts(7,1): error TS2304: Cannot find name 'describe'.
public/assets/plugins/reflect-metadata/test/reflect-getmetadata.ts(8,5): error TS2304: Cannot find name 'it'.
public/assets/plugins/reflect-metadata/test/reflect-getmetadata.ts(12,5): error TS2304: Cannot find name 'it'.
public/assets/plugins/reflect-metadata/test/reflect-getmetadata.ts(18,5): error TS2304: Cannot find name 'it'.
public/assets/plugins/reflect-metadata/test/reflect-getmetadata.ts(25,5): error TS2304: Cannot find name 'it'.
public/assets/plugins/reflect-metadata/test/reflect-getmetadata.ts(33,5): error TS2304: Cannot find name 'it'.
public/assets/plugins/reflect-metadata/test/reflect-getmetadata.ts(39,5): error TS2304: Cannot find name 'it'.
public/assets/plugins/reflect-metadata/test/reflect-getmetadata.ts(46,5): error TS2304: Cannot find name 'it'.
public/assets/plugins/zone.js/dist/zone.js.d.ts(129,11): error TS2451: Cannot redeclare block-scoped variable 'Zone'.
public/assets/plugins/zone.js/dist/zone.js.d.ts(374,14): error TS2300: Duplicate identifier 'HasTaskState'.
public/assets/plugins/zone.js/dist/zone.js.d.ts(383,14): error TS2300: Duplicate identifier 'TaskType'.
public/assets/plugins/zone.js/dist/zone.js.d.ts(482,15): error TS2451: Cannot redeclare block-scoped variable 'Zone'.
public/assets/plugins/zone.js/lib/jasmine/jasmine.ts(22,14): error TS2304: Cannot find name 'jasmine'.
public/assets/plugins/zone.js/lib/jasmine/jasmine.ts(23,7): error TS2304: Cannot find name 'jasmine'.
public/assets/plugins/zone.js/lib/jasmine/jasmine.ts(25,3): error TS2304: Cannot find name 'jasmine'.
public/assets/plugins/zone.js/lib/jasmine/jasmine.ts(50,22): error TS2304: Cannot find name 'jasmine'.
public/assets/plugins/zone.js/lib/jasmine/jasmine.ts(112,24): error TS2304: Cannot find name 'jasmine'.
public/assets/plugins/zone.js/lib/jasmine/jasmine.ts(113,4): error TS2304: Cannot find name 'jasmine'.
public/assets/plugins/zone.js/lib/zone.ts(130,11): error TS2451: Cannot redeclare block-scoped variable 'Zone'.
public/assets/plugins/zone.js/lib/zone.ts(409,6): error TS2300: Duplicate identifier 'HasTaskState'.
public/assets/plugins/zone.js/lib/zone.ts(416,6): error TS2300: Duplicate identifier 'TaskType'.
public/assets/plugins/zone.js/lib/zone.ts(542,7): error TS2451: Cannot redeclare block-scoped variable 'Zone' 

αν και πήρα πάνω από λάθη άλλων .ts μου αρχεία είναι σωστά κατάρτιση και εφαρμογή μου τρέχει επίσης καλά. είναι αυτό μεταγλωττιστής προσπαθεί να συγκεντρώσει .ts αρχεία που σχετίζονται με τα αρχεία της εξάρτησης; αν ναι, πώς να αποφύγει αυτό ή κάποιο άλλο σφάλμα; μπορεί κάποιος να με βοηθήσει ..

αρχείο tsconfig.json

 {
compilerOptions: {
    module: commonjs,
    target: es5,
    noImplicitAny: false,
    sourceMap: true,
    experimentalDecorators: true
} }

systemjs.config.js αρχείο

   (function (global) {
    System.config({
       transpiler:'typescript',

        typescriptOptions: {
           emitDecoratorMetadata: true },

paths: {
  // paths serve as alias
  'npm:': '/'
},
// map tells the System loader where to look for things
map: {
  // our app is within the app folder
  app: 'app_2',

  // angular bundles
  '@angular/core': 'npm:@angular/core/bundles/core.umd.js',
  '@angular/common': 'npm:@angular/common/bundles/common.umd.js',
  '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js',
  '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js',
  '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
   '@angular/upgrade/static': 'npm:@angular/upgrade/bundles/upgrade-static.umd.js',

  // other libraries
  'rxjs':                      'rxjs',
  'angular-in-memory-web-api': 'npm:angular-in-memory-web-api/bundles/in-memory-web-api.umd.js'
},
// packages tells the System loader how to load when no filename and/or no extension
packages: {
  app: {

    defaultExtension: 'js'
  },
  rxjs: {
    defaultExtension: 'js'
  },
},
      'angular2-in-memory-web-api': {
       defaultExtension: 'js'
    },
 });
})(this);`

index.html

  <script src=assets/plugins/zone.js/dist/zone.js></script>
  <script src=assets/plugins/reflect-metadata/Reflect.js></script>
  <script src=assets/plugins/systemjs/dist/system.src.js></script>
  <script src=assets/plugins/systemjs/systemjs.config.js></script>
  <script>
     System.import('app_2/main').then(null, console.error.bind(console));
  </script>'

δομή του αρχείου:

app -- node_modules
    -- public
        -- app_2
        -- assets
           -- plugins
              --reflect-metadata 
              --zone.js 
Δημοσιεύθηκε 09/03/2017 στις 04:05
πηγή χρήστη
Σε άλλες γλώσσες...                            


2 απαντήσεις

ψήφοι
0

Εδώ βρήκα τη λύση. στο αρχείο tsconfig μου, να αποκλείσει τον αντίστοιχο φάκελο όπως παρακάτω.

{
"compilerOptions": {
    "module": "commonjs",
    "target": "es5",
    "noImplicitAny": false,
    "sourceMap": true,
    "moduleResolution": "node",
    "experimentalDecorators": true

},
 "exclude": [
"public/assets/plugins/angular_2"
]

}

Φαίνεται ότι η γραφομηχανή compiler προσπαθεί να συγκεντρώσει .ts αρχεία σε zone.js και αντανακλούν-μεταδεδομένων. Έτσι, με εξαίρεση αυτόν το φάκελο μπορεί να λύσει το πρόβλημα. :) Αλλά όταν κινούνται @angular φάκελο σε φάκελο plugins, δίνει λάθος «δεν μπορεί να βρει ενότητα». Δεν μπορώ να αποκλείσει αυτόν το φάκελο από τότε που το χρειάζεστε μέσα TS φακέλους.

Οποιαδήποτε λύση για αυτό;

Απαντήθηκε 09/03/2017 στις 05:58
πηγή χρήστη

ψήφοι
0

Σε tsconfig.json σας χάνετε μια moduleResolutionπεριουσία για να πει tscτον τρόπο επίλυσης ενότητες:

moduleResolution: 'node'
Απαντήθηκε 09/03/2017 στις 04:20
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more