2017-02-23 1 views
3

J'utilise aurelia avec tapuscrit et je voulais éviter d'utiliser chemin d'importation relatif comme:bottelage Aurelia échoue lorsque vous utilisez chemin d'importation relatif

import { DialogBox } from '../../resources/elements/dialog-box'; 

mais plutôt

import { DialogBox } from 'resources/elements/dialog-box'; 

Je modifié mon TSconfig. JSON de sorte que le compilateur gère les chemins relatifs en ajoutant baseUrl et chemins comme ceci:

"compilerOptions": { 
"sourceMap": true, 
"target": "es5", 
"module": "amd", 
"declaration": false, 
"noImplicitAny": false, 
"removeComments": true, 
"emitDecoratorMetadata": true, 
"experimentalDecorators": true, 
"moduleResolution": "node", 
"lib": ["es2015", "dom"], 
"baseUrl": ".", 
"paths": { 
    "*":["src/*"] 
} 

} ...

Mais quand je lance la commande du cli « au --watch courir », je peux voir toutes les étapes de travail jusqu'à la fin writeBundle étape qui échoue lors du traçage des fichiers:

Starting 'processMarkup'... 
Starting 'processCSS'... 
Starting 'configureEnvironment'... 
Finished 'configureEnvironment' 
Starting 'buildTypeScript'... 
Finished 'processCSS' 
Finished 'processMarkup' 
Finished 'buildTypeScript' 
Starting 'writeBundles'... 

le processus échoue avec l'erreur suivante:

Tracing resources/elements/dialog-box... 
{ uid: 11, 
    name: 'writeBundles', 
    branch: false, 
    error: 
    { [Error: ENOENT: no such file or directory, open 'C:\...\src\resources\elements\dialog-box.js'] 
    errno: -4058, 

la chose étrange est: il y a d'autres fichiers qui sont référencés avec le chemin non-parent et où le bundler ne manque pas.

Et une autre chose étrange: si je laisse le chemin relatif et le faisceau en utilisant l'observateur, tout fonctionne bien. Ensuite, si je supprime le relatif '../../' de l'importation problématique, je reçois un avertissement bundling mais tout fonctionne de toute façon ...

Une idée de ce que je pourrais avoir mal fait?

RÉVISÉ POUR LA CORRECTION:

Je viens understoof pourquoi certains fichiers semblaient être groupés tandis que d'autres ne sont pas. J'ai remarqué que tous les fichiers avec des importations "relatives à la racine" qui n'ont pas échoué ont été importés à partir d'autres fichiers avec un chemin relatif. Donc, je suppose que le bundler les trouve à partir de là. Cela permet de résoudre une chose, mais le problème de base est toujours là: aurelia-cli échoue quand il y a regroupement « relatifs à la racine » importations ...

SOLUTION POUR ÉDITÉ: Merci à la solution de Sinan Bolel ici sous, le problème de chemin relatif a été résolu en mettant à jour des paquets suivants:

npm i -D [email protected]^3.1.5 [email protected]^2.1.0 [email protected]^1.0.0 

les erreurs sémantiques que j'ai eu par la suite sont venus de quelques typages qui étaient encore installés et non nécessaires ainsi que d'avoir tapuscrit installé en tant que paquet de NPM local ainsi que dans le monde . Je les ai désinstallés et toutes les erreurs ont disparu.

npm uninstall @types/es6-promise 
npm uninstall @types/es6-collections 
npm uninstall typescript 
+0

Si vous pensez que cela est un bug, ne hésitez pas à ouvrir un question dans le cli [référentiel github] (https://github.com/aurelia/cli/issues) – JeroenVinke

+0

J'ai créé le problème de github suivant: https://github.com/aurelia/cli/issues/494 – Gaet

Répondre

1

Jetez un oeil à ce Gist example dans lequel:

  • Je crée une classe Init dans src/lib/init.ts
  • Je import init from 'lib/init' dans src/main.ts sans chemin relatif
  • Je change main.ts à import environment from 'environment' par opposition à from './environment' - qui fonctionne également.


Utilisation du original tsconfig generated by the CLI, ma génération a échoué avec l'erreur:

src/main.ts(3,18): error TS2307: Cannot find module 'lib/init'. 

Après avoir changé la tsconfig in my Gist, la construction a réussi.

(invalides) Suggestions:

En TSconfig, pouvez-vous s'il vous plaît essayer:

a) Ajout ./ devant src dans compilerOptions.paths (cela résout le problème sur ma machine)

paths: {"*": ["./src/*"]} 
       ^

b) Ajouter filesGlob

"filesGlob": [ 
    "./src/**/*.ts", 
    "./test/**/*.ts", 
    "./typings/index.d.ts", 
    "./custom_typings/**/*.d.ts" 
], 

modifier: suggestions précédentes ne fonctionnent, comment sur les paquets de mise à jour:

npm i -D [email protected]^3.1.5 [email protected]^2.1.0 [email protected]^1.0.0 

Voir les résultats en https://github.com/aurelia/cli/issues/494#issuecomment-282103289

+0

Merci pour votre contribution. Malheureusement, cela ne résout pas mon problème. La compilation de caractères dactylographiés fonctionne sans problème, c'est juste l'empaquetage qui pose problème. – Gaet

+1

via https://github.com/aurelia/cli/issues/494#issuecomment-282103289 - 'npm i -D [email protected] [email protected] [email protected] ' –

+0

Je m'excuse @Gaet Je n'ai pas fait un bon travail en lisant votre question laissez-moi savoir si les mises à jour aident! –