2013-08-13 10 views
28

Impossibile compilare alcun + node.js progetto TS compresi elencati in campioni http://typescript.codeplex.com/sourcecontrol/latest#samples/imageboard/README.txtdattiloscritto errore di compilazione TS5037: impossibile compilare moduli esterni a meno che non è previsto il flag '--module'

Sempre ottenere il seguente errore:

errore TS5037: impossibile compilare moduli esterni a meno che non venga fornito il flag '--module'. Versione

del compilatore: 0.9.1.0

Ad esempio, il progetto consiste in app.ts di file solo singoli:


///<reference path="./node_definitions/node.d.ts"/

import http = require("http") 

http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end('Hello World\n'); 
}).listen(1337, 'localhost'); 
console.log('Server running at http://localhost:1337/'); 

risposta

25

Come accennato compilare con la bandiera del modulo, per esempio se il file è denominato myfile.ts:

tsc myfile.ts --module "commonjs" 

Il motivo è che a partire dal TSC 0.9.1 l'opzione del modulo di default è amd (ad esempio requirejs), che è il modello del modulo più comune per lato client codice javascript. Quindi, devi specificare l'opzione del modulo per ottenere il codice commonjs che è il modello di modulo più comune per il codice javascript lato server (ad esempio nodejs), motivo per cui il compilatore ti chiede esplicitamente riguardo al tuo target :) Questo prompt si verifica quando fare un import su un modulo esterno.

+1

Grazie mille, l'ha fatto! –

28

Anche solo per aggiungere.

Utilizzo Visual Studio 2013 Ho ricevuto lo stesso errore durante l'esecuzione di build per risolverlo. Sono andato alle proprietà del mio progetto e poi alla sezione "TypeScript Build" c'era l'opzione di scegliere un sistema di moduli che ho selezionato AMD che non era in nessuno.

+1

Ho anche avuto "Nessuno" e questo ha funzionato perfettamente, grazie. Un'altra cosa che voglio aggiungere è che si può ancora fare un errore diverso se non si è sicuri che Typescript sia a conoscenza del proprio modulo esterno. Qualcosa di simile: 'dichiarare il modulo 'angolare' { var angular: ng.IAngularStatic; esportazione = angolare; } ' – parliament

+0

Grazie per la tua seconda risposta, stavo cercando una correzione per qualche ora ... – Jerome2606

+1

Ho fatto questo e ho ancora ricevuto l'errore. Iniziando a chiedermi se si tratta di un bug VS2015, ora. –

Problemi correlati