2016-01-25 2 views
4

J'utilise Webpack pour regrouper les dépendances, dont l'un est le service d'emailing postmark. Ce service dépend de quelque chose appelé child_process qui est apparemment livré avec le noeud.Utilisation du module "child_process" sans Webpack

Le problème est, lorsque je tente de lancer webpack de regrouper mon application, il se plaint:

Module not found: Error: Cannot resolve module 'child_process' in ...

La plupart des réponses disent en ligne qui, en réponse à cette erreur, je dois ajouter la ligne:

node: { 
    child_process: 'empty' 
    } 

à ma config webpack. Mais cela n'a aucun sens, car alors ne webpack juste essayer de ne pas chercher child_process, et par conséquent, quand je lance mon application, je reçois l'erreur suivante:

Uncaught TypeError: exec is not a function

qui est une erreur de postmark (service cela dépend de child_process) se plaignant que la fonction exec dans le module child_process n'existe pas.

Ainsi, je me demande comment je peux inclure le module child_process dans ma construction sans se plaindre du webpack?

Répondre

2

Développeur frontal de Postmark ici.

Il semble que vous essayiez de regrouper postmark.js dans votre JavaScript côté client, mais https://github.com/wildbit/postmark.js est une bibliothèque Node.js. Cela signifie qu'il ne fonctionnera pas dans le navigateur et nécessite un serveur Node.js en cours d'exécution.

La principale raison de ne pas prendre en charge l'environnement du navigateur est la sécurité. Comme vous pouvez le voir dans cet exemple:

var postmark = require("postmark"); 
var client = new postmark.Client("<server key>"); 

vous devez insérer le jeton d'authentification. En l'associant à votre JS côté client, vous l'exposerez et autoriserez tout le monde à accéder à l'API de votre compte postal.

Espérons que cela le clarifie.

+0

Merci pour la réponse - Je l'ai porté vers mon backend express et ça fonctionne très bien. –