Sto utilizzando AWS Lambda, che comporta la creazione di un archivio del mio script node.js, inclusa la cartella node_modules
e il caricamento sulla relativa infrastruttura per l'esecuzione.Modulo nodo cross-compilare con binding nativi con node-gyp
Questo funziona correttamente, tranne quando si tratta di moduli nodo con collegamenti nativi (utilizzando node-gyp). Poiché l'associazione è stata rispettata e il progetto è stato archiviato sul mio computer locale (OS X), non è compatibile con i server di AWS (Amazon Linux).
Come è possibile compilare/installare in modo incrociato un modulo nodo (in particolare, node-sqlite3) così quando lo carico su un altro arco del server viene eseguito?
Hai provato a utilizzare node-pre-gyp? node-sqlit3 già lo usa, quindi sei davanti al gioco lì. IIRC, dovrebbe scaricare la build su Amazon S3, in modo che tu possa compilare Amazon Linux (sistema operativo AWS Lambda). – zamnuts
Sì, ho visto che node-sqlite3 utilizza node-pre-gyp, ma non ho veramente capito cosa significhi per me o come usarlo per ottenere ciò che voglio. –
So che comporta un costo aggiuntivo, ma suggerisco di impacchettare la generazione di annunci su un'altra casella s3. Quindi trasferirlo nel tuo ambiente di produzione. Nota che se esegui il comando npm i dal tuo ambiente Linux, tutto funzionerebbe benissimo, se disponi degli strumenti di compilazione richiesti. –