protocolbuffers / protocolbuffers/protobuf-javascript

Public import is not included in generated CommonJS file

Abierto
#55 3 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

enhancement javascript triaged
Lenguaje dominante
JavaScript
Estrellas
471
Forks
91
Merge medio
3 h 57 min
PR fusionados (30 d)
2

Descripción

System

Version: v3.6.1
Language: Javascript
macOS 10.14

Steps to reproduce

  1. Create a src directory with 3 files:
    // id.proto
    syntax = "proto3";
    
    message Id {
      string value = 1;
    }
    
    // task.proto adding a transitive import for `Id`
    syntax = "proto3";
    import public "id.proto";
    
    message Task {
      Id id = 1;
    }
    
    // project.proto importing both `Id` and `Task` from Project
    syntax = "proto3";
    import "task.proto";
    
    message Project {
      Id id = 1;
      repeated Task task = 2;
    }
    
  2. Compile to js using
    mkdir build
    protoc --proto_path=src --js_out=import_style=commonjs,binary:build id.proto task.proto project.proto 
    
  3. npm install google-protobuf under the root directory.
  4. node test.js
    // test.js
    var id_pb = require('./build/id_pb');
    var project_pb = require('./build/project_pb');
    
    var id = new id_pb.Id();
    id.setValue("Everything is fine");
    
    var project = new project_pb.Project()
    project.setId(id);
    
    process.stdout.write(project.getId().getValue());
    process.stdout.write("\n");
    

Expected behaviour

Everything is fine is printed to the console.

Actual behaviour

.../test-proto/build/project_pb.js:173
    jspb.Message.getWrapperField(this, id_pb.Id, 1));
                                       ^

ReferenceError: id_pb is not defined
    at proto.Project.getId (.../test-proto/build/project_pb.js:173:40)
    at Object.<anonymous> (.../test-proto/test.js:10:30)
    at Module._compile (internal/modules/cjs/loader.js:688:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10)
    at Module.load (internal/modules/cjs/loader.js:598:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:537:12)
    at Function.Module._load (internal/modules/cjs/loader.js:529:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:741:12)
    at startup (internal/bootstrap/node.js:285:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:739:3)

id_pb import is missing from project_pb. Alternatively it may be referenced from task_pb, since it’s declared public in task.proto.

The error does not show up if id.proto is explicitly imported in project.proto.

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Reproduce el caso con el comando protoc proporcionado y, después, inspecciona build/project_pb.js y los imports generados para id_pb y task_pb. Usa test.js para verificar el comportamiento; está terminado cuando el import público transitivo está disponible para project_pb.js y el script imprime “Everything is fine” sin requerir un import explícito en project.proto.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
javascript
Área
tooling
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
45/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.