2013-03-20 2 views
11

Wie der Titel sagt meine inline require Aufrufe arbeiten in einem nicht-optimierte requirjs laufen, aber nicht funktioniert, wenn mit grunt und mandeljs gebaut.Inline require() funktioniert in requirejs aber nicht mit optimierten Mandel Build

Uncaught Error: undefined missing views/some/view 

oberen Rand einer beliebigen Datei sein könnte:

define(
['jquery', 'app'], 
function($, App) { 

und später auf Business-Logik auf Basis von I

require(['views/some/view'], function(SomeView){ 
    console.log(SomeView); 
}); 

ich die alternative Syntax versucht, eine andere Datei zu benötigen in der Lage sein wollen auch:

var SomeView= require('views/some/view'); 

Und das alles funktioniert mit einer unbuilt requires-Version. Aber auch hier scheitert es, wenn ich es mit Grunzen bauen und Mandel

requirejs: { 
     compile: { 
      options: { 
       name: "../components/almond/almond", 
       baseUrl: "src", 
       mainConfigFile: "./require.config.js", 
       include: ['main'], 
       insertRequire: ['main'], // Add a require step in at the end for the main module. 
       wrap: true, // Wrap everything up in a closure 
       generateSourceMaps: true, // Experimental 
       preserveLicenseComments: false, // Needs turned off for generateSourceMaps 
       optimize: "uglify2", // Supports generateSourceMaps 
       out: "assets/javascripts/build.js" 
      } 
     } 
    }, 

Ich kann es in Mandel arbeitet gut, wenn ich es am Anfang der Datei in einem Aufruf definieren setzen, aber ist es nicht bevorzugt AMD, um es schlank zu halten?

Antwort

10

Laut der Almond-Dokumentation funktioniert es am besten mit nicht dynamischem Laden und allem, was in einer Datei verpackt ist.

Sie sollten "findNestedDependencies" in Ihren Kompilieroptionen auf "true" setzen können, um sicherzustellen, dass Ihre inline require-Aufrufe als Teil des Builds enthalten sind.

+0

+1 Hatte das gleiche Problem und das hat es gelöst. – daemon

+0

Danke, du hast meinen Tag gerettet! – njtman

Verwandte Themen