2014-02-21 3 views
6

Учитывая следующее:browserify-прокладка не находя модуль

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" 
    } 
} 

При работе:

browserify . -d -o bundle.js 

Пучок является успешно создан и выход из owserify-регулировочные диагностики:

{ 
    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 
     } 
    } 
    }] 
} 

Если package.json изменяются на это (удаление раздела браузера):

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

Я получаю следующее сообщение об ошибке:

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

С выход из браузера-пробоотборника:

{ 
    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' 
} 

У меня создалось впечатление, что раздел браузера предназначен для настройки псевдонимов и что два разных файла package.json выше должны быть эквивалентными.

Я неправильно понял?

ответ

7

От автора:

Если вы не псевдоним ./vendor/angular/angular.js угловых через поле браузера, browserify не знает, где его найти.

Так, если опустить браузер поле псевдоним пожалуйста:

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

(при условии, что ./vendor/angular/angular.js относительно того, где вы требовать его от)

+0

Где это документально? Я должен упустить это. –

Смежные вопросы