Quindi il codice è semplice:errore del compilatore tipografico durante l'importazione di file JSON
calls.json
{"SERVER":{
"requests":{
"one":"1"
}
} }
file.ts
import json = require('../static/calls.json');
console.log(json.SERVER);
il JavaScript generato sia corretto e quando si esegue il nodo js server, il log della console json.SERVER stampa '{richieste: {uno:' 1 '}}', come dovrebbe.
Il compilatore typescript (commonjs) tuttavia, in qualche modo non ama particolarmente questa situazione e genera: "Impossibile trovare il modulo '../static/calls.json'".
Naturalmente ho provato a scrivere un file .d.ts, in questo modo:
declare module '../static/calls.json'{
var exp:any;
export = exp;
}
questo poi, ovviamente, getta: "dichiarazione del modulo ambiente non può specificare relativo nome del modulo".
Ho anche provato diverse varianti, come:
declare module 'calls.json' {
import * as json from '/private/static/calls.json';
export = json;
}
e quindi richiede:
import json = require('calls.json');
Nessuno lavoro correttamente e hanno i propri errori di compilazione piccoli :)
voglio usare un file .json esterno perché uso commonjs serveride e amd clientide e voglio un singolo file per caricare le costanti.
Questo funzionerebbe, anche se sto usando requirejs clientide. Questo significa che quando si carica la definizione requirejs, la variabile dichiarata richiede nella definizione del nodo causa problemi poiché una richiesta var è stata dichiarata anche in require.d.ts ... – Ken
Yup, che è previsto quando entrambe le definizioni vengono referenziate contemporaneamente. Ciò avverrebbe anche in fase di runtime. Non useresti mai entrambi 'require' allo stesso tempo. La soluzione rapida è quella di avere quel file che non fa riferimento a nessuno di essi e basta usare 'declare var require: any;'. – thoughtrepo
buone risposte, preparerò una soluzione ... – Ken