2014-02-21 13 views
6

Angesichts der folgenden:browserify-Shim nicht finden Modul

main.js

var angular = require('angular'); 

package.json

{ 
    "main": "./main.js", 
    "browser": { 
    "angular": "./vendor/angular/angular.js" 
    }, 
    "browserify-shim": { 
    "angular": "angular" 
    }, 
    "browserify": { 
    "transform": [ "browserify-shim" ] 
    }, 
    "dependencies": { 
    "browserify-shim": "~3.2.0" 
    } 
} 

Beim Laufen:

browserify . -d -o bundle.js 

Ein Bündel ist erfolgreich erstellt und die Ausgabe von der br owserify-Shim Diagnostik ist:

{ 
    file: 'D:\\development\\js\\browserify\\main.js', 
    info: 
    { 
    package_json: 'D:\\development\\js\\browserify\\package.json', 
    packageDir: 'D:\\development\\js\\browserify', 
    shim: undefined, 
    exposeGlobals: 
    {}, 
    browser: 
    { 
     angular: './vendor/angular/angular.js' 
    }, 
    'browserify-shim': 
    { 
     angular: 'angular' 
    }, 
    dependencies: 
    { 
     'browserify-shim': '~3.2.0' 
    }, 
    lookedUp: false 
    }, 
    messages: ['Found "angular" in browser field referencing "./vendor/angular/angular.js" and resolved it to "D:\\development\\js\\browserify\\vendor\\angular\\angular.js"', 
    { 
    resolved: 
    { 
     'D:\\development\\js\\browserify\\vendor\\angular\\angular.js': 
     { 
     exports: 'angular', 
     depends: undefined 
     } 
    } 
    }] 
} 

{ 
    file: 'D:\\development\\js\\browserify\\vendor\\angular\\angular.js', 
    info: 
    { 
    package_json: 'D:\\development\\js\\browserify\\package.json', 
    packageDir: 'D:\\development\\js\\browserify\\', 
    shim: 
    { 
     exports: 'angular', 
     depends: undefined 
    }, 
    exposeGlobals: 
    {}, 
    browser: 
    { 
     angular: './vendor/angular/angular.js' 
    }, 
    'browserify-shim': 
    { 
     angular: 'angular' 
    }, 
    dependencies: 
    { 
     'browserify-shim': '~3.2.0' 
    }, 
    lookedUp: false 
    }, 
    messages: ['Found "angular" in browser field referencing "./vendor/angular/angular.js" and resolved it to "D:\\development\\js\\browserify\\vendor\\angular\\angular.js"', 
    { 
    resolved: 
    { 
     'D:\\development\\js\\browserify\\vendor\\angular\\angular.js': 
     { 
     exports: 'angular', 
     depends: undefined 
     } 
    } 
    }] 
} 

Wenn package.json wird dies geändert (der Browser Abschnitt zu entfernen):

{ 
    "main": "./main.js", 
    "browserify-shim": { 
    "./vendor/angular/angular.js": "angular" 
    }, 
    "browserify": { 
    "transform": [ "browserify-shim" ] 
    }, 
    "dependencies": { 
    "browserify-shim": "~3.2.0" 
    } 
} 

ich die folgende Fehlermeldung erhalten:

Error: module "angular" not found from "D:\\development\\js\\browserify\\main.js" 

Mit dem Ausgabe von der browserify-shim Diagnose als:

{ 
    file: 'D:\\development\\js\\browserify\\main.js', 
    info: 
    { 
    package_json: 'D:\\development\\js\\browserify\\package.json', 
    packageDir: 'D:\\development\\js\\browserify', 
    shim: undefined, 
    exposeGlobals: 
    {}, 
    browser: undefined, 
    'browserify-shim': 
    { 
     './vendor/angular/angular.js': 'angular' 
    }, 
    dependencies: 
    { 
     'browserify-shim': '~3.2.0' 
    }, 
    lookedUp: false 
    }, 
    messages: ['Resolved "./vendor/angular/angular.js" found in package.json to "D:\\development\\js\\browserify\\vendor\\angular\\angular.js"', 
    { 
    resolved: 
    { 
     'D:\\development\\js\\browserify\\vendor\\angular\\angular.js': 
     { 
     exports: 'angular', 
     depends: undefined 
     } 
    } 
    }] 
} 
{ 
    [Error: module "angular" 
    not found from "D:\\development\\js\\browserify\\main.js" 
    ] 
    filename: 'angular', 
    parent: 'D:\\development\\js\\browserify\\main.js' 
} 

Ich hatte den Eindruck, dass der Browser-Abschnitt zum Konfigurieren von Aliasen diente und dass die zwei verschiedenen package.json-Dateien oben gleichwertig sein sollten.

Habe ich missverstanden?

Antwort

7

Vom Autor:

Wenn Sie alias nicht ./vendor/angular/angular.js zu Winkel über den Browser Feld, browserify nicht weiß, wo sie zu finden.

Also, wenn Sie den Browser Feld Alias ​​weglassen bitte tun:

var angular = require('./vendor/angular/angular.js');

(unter der Annahme, dass ./vendor/angular/angular.js relativ zu dem Sie verlangen es von)

+0

Wo ist das dokumentiert? Ich muss es übersehen. –