2014-09-19 4 views
1

J'essaie de créer une application avec le code client et côté serveur. Le code du serveur se trouve dans un répertoire appelé 'bin', le fichier html- avec les fichiers css- et dart correspondants se trouve dans un répertoire appelé 'web'. Ces derniers sont retournés correctement (avec l'aide de VirtualDirectory), mais quand il s'agit de fichiers dans des paquets, ils ne sont pas trouvés. Par exemple. /packages/browser/dart.jsL'application côté serveur ne trouve pas dart.js

J'ai essayé sur un windows-, et (ubuntu) linux-machine. J'ai essayé de partir de l'éditeur à la fois en mode coché et non coché. J'ai lancé pub build avec l'autorisation root, et j'ai aussi lancé l'application depuis la ligne de commande avec 'sudo'. Je peux voir le répertoire du navigateur dans '.pub-cache', mais je ne peux pas l'ouvrir.

Qu'est-ce qui me manque ici?

Répondre

1

bin/server.dart:

import 'dart:io'; 
import 'package:http_server/http_server.dart'; 

main() { 
    HttpServer.bind(InternetAddress.ANY_IP_V4, 80).then((server) { 
    new VirtualDirectory('../web') 
     ..jailRoot = false 
     ..serve(server); 
    }); 
} 

vous pouvez maintenant accéder dart.js avec

http://localhost/packages/browser/dart.js 

L'astuce consiste à mettre jailRoot = false pour permettre au serveur de servir le fichier de l'extérieur du répertoire racine.

+0

Et ce n'est que pendant le développement. Pour le déploiement, vous devez exécuter pub build et la sortie générée ne contient plus de liens symboliques. –

+0

Voilà ce qui me manquait :) Merci! – burktelefon

Questions connexes