2015-02-11 5 views
10

Sto provando a eseguire un file Javascript con nodo per pubblicare aggiornamenti di blog su Tumblr.define non è definito Nodo Javascript

finora nella mia main.js depositare ho questo:

// Tumblr Information 
var tumblr = require('./vendor/tumblr'); 
tumblr.request(require('request')); 
var Blog; 

var jq = require('./vendor/jquery-1.11.1.min'); 
var reqq = require('./vendor/require'); 
var inher = require('./vendor/inheritance'); 

var grammars = require('./tracery/grammar'); 

Ma poi ricevo il seguente errore quando ho eseguito main.js nodo

ReferenceError: define is not defined 
    at Object.<anonymous> (B:\Documents\Google Drive\Programming\CMPM 147 Tracery\Tumblr Tracery\js\ 
tracery\grammar.js:6:1) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Module.require (module.js:364:17) 
    at require (module.js:380:17) 
    at Object.<anonymous> (B:\Documents\Google Drive\Programming\CMPM 147 Tracery\Tumblr Tracery\js\ 
main.js:11:16) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 

E qui è dove l'errore viene gettato nel file grammar.js:

define(["./modifiers", "./node"], function(universalModifiers, Node) {'use strict'; 

    // other stuff... 
}); 

non credo che un modulo viene caricato correttamente perché sta affermando che la funzione define non è definita. Credo che questa funzione provenga da requireJS ma non penso di caricarlo correttamente. Qualcuno ha qualche suggerimento sul perché definire potrebbe non essere definito, o suggerimenti su come caricare il modulo corretto?

Grazie.

+0

La parte tumblr del codice non sta lanciando il reclamo. Ho trovato la parte tumblr funzionante, ma la riga che causa il problema è: var grammars = require ('./ tracery/grammar') – leaflet757

+0

Ah, vedo - la parte tumblr del percorso mi ha guidato in quel modo . –

+0

Perché stai usando 'define'? Non è così che si definisce un modulo in Node.js –

risposta

13

Sembra che si stia tentando di caricare una libreria codificata in base al modello AMD (Asynchronous Module Definition), che il nodo non supporta in modo nativo. È perfettamente possibile per l'autore di una libreria scrivere tale libreria in modo che possa essere caricata nel nodo. Gli utenti della libreria devono estendere le capacità di caricamento del modulo di Node per comprendere AMD per caricare tale libreria.

Esistono più caricatori che è possibile utilizzare, quello che uso è amd-loader. Una volta installato con npm, basta aggiungere

require("amd-loader"); 

prima di caricare qualsiasi modulo AMD.

+0

Eccellente, questo risolve il problema! Non mi rendevo conto che la libreria era scritta nel modello AMD. Sono ancora molto nuovo a Node e Javascript per quella materia. Grazie ancora per il vostro aiuto! – leaflet757