Pergunta

Na minha aplicação, tenho um módulo nomeado definido in-line em index.html:

<script>
    define('config', {
        mode: '...',
        environment: '...',
        apiUrl: '...',
        rootPath: '...',
        baseImageUrl: '...'
    });
</script>

Preciso definir isso em minha página da web porque extraio algumas coisas usando variáveis ​​de ambiente.Então, nos meus módulos, posso incluir 'config':

define(['config', 'jquery'], function(config, $) { ... });

Quando executo uma compilação do RequireJS usando Grunt (com grunhido-exige, que usa r.js), está reclamando que não está encontrando o config.js.Minha configuração de compilação é assim:

{
    baseUrl: 'js',
    main: 'app/Main',
    dir: 'js/build',
    out: null,
    modules: { ... },
    paths: { ... },
    shim: { ... }
}

Quando eu construo, recebo:

Error: Error: ENOENT, no such file or directory '/projects/projectname/js/build/config.js

Como posso permitir o uso de módulos nomeados e definidos em linha em conjunto com uma compilação r.js?

Foi útil?

Solução

Contexto

paths: {
   config : 'empty:'
}

em seu arquivo de configuração de compilação deve excluir este módulo do processo de otimização e, como resultado, parar de gerar esse erro.

Mas esta é uma maneira um pouco complicada, porque esta opção é comumente usada para excluir dependências de terceiros (por exemplo, ao desenvolver alguma biblioteca js baseada em Backbone, seria melhor separar sua lib do Backbone)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top