Error: no such service in Root

Hi experts:
I followed the shopping cart tutorial to create my own function, but when trying to start the server, it always reports an error

Error: no such Service 'stockupdate.StockUpdateService' in Root
    at Root.lookupService (/Users/i307132/Desktop/Serverless/my-project/stockupdate-js/node_modules/protobufjs/src/namespace.js:425:15)
    at new EventSourcedEntity (/Users/i307132/Desktop/Serverless/my-project/stockupdate-js/node_modules/@lightbend/akkaserverless-javascript-sdk/dist/src/event-sourced-entity.js:118:34)
    at file:///Users/i307132/Desktop/Serverless/my-project/stockupdate-js/stockupdate.js:4:16

my prorobuf:

syntax = "proto3";

package stockupdate;

import "akkaserverless/annotations.proto";
import "google/api/annotations.proto";
import "google/protobuf/empty.proto";

message AggregateStoreStock {
    string WarehouseUid = 1 [(akkaserverless.field).entity_key = true];
    string StoreUid = 2;
    int32 Stocklevel = 3;
}
message GetWarehouseStocks {
    string WarehouseUid = 1 [(akkaserverless.field).entity_key = true];
}
message Stock {
    string StoreUid = 1;
    int32 Stocklevel = 2;
}
message WarehouseStock {
    repeated Stock stocks = 1;
}
service StockUpdateService {
    option (akkaserverless.service) = {
        type: SERVICE_TYPE_ENTITY
        component: ".domain.StockUpdate"
    };
    rpc AggregateStocks (AggregateStoreStock) returns (google.protobuf.Empty) {
        option (google.api.http) = {
            post: "/{WarehouseUid}/stocks/update"
            body: "*"
        };
    }
    rpc GetStocks (GetWarehouseStocks) returns (WarehouseStock) {
        option (google.api.http) = {
            get: "/warehousestocks/{WarehouseUid}"
        };
    }
}

and my service

import as from '@lightbend/akkaserverless-javascript-sdk';
const EventSourcedEntity = as.EventSourcedEntity;

const entity = new EventSourcedEntity(
    ["stockudpate.proto", "domain.proto"],
    "stockupdate.StockUpdateService",
    "stock",
    {
      snapshotEvery: 100,
      includeDirs: ['./'],
      serializeAllowPrimitives: true,
      serializeFallbackToJson: true
    }
  );

  const pkg = "stockupdate.domain.";
  const StockAggregated = entity.lookupType(pkg + "StockAggregated");
  const WarehouseStock = entity.lookupType(pkg + "WarehouseStock");

  entity.setInitial(warehouseId => WarehouseStock.create({stocks:[]}))
  entity.setBehavior(warehousestock => {
      return {
          commandHandlers: {
            AggregateStocks: aggregateStocks,
            GetStocks: getStocks
          },
          eventHandlers: {
            StockAggregated: stockAggregated
          }
      };
  });

  function aggregateStocks(aggregateStocks, warehousestock, ctx) {
      if (aggregateStocks.Stocklevel < 1) {
          ctx.fail('cannot add negative stocklevel' + aggregateStocks.Stocklevel);
      } else {
          const stockAggregated = StockAggregated.create({
              stock: {
                  StoreUid: aggregateStocks.StoreUid,
                  Stocklevel: aggregateStocks.Stocklevel
              }
          });
          ctx.emit(stockAggregated);
          return {};
      }
  }
  function getStocks(request, warehousestock) {
      return warehousestock;
  }
  function stockAggregated(added, warehousestock) {
      const existing = warehousestock.stocks.find(stock => {
          return stock.StoreUid === added.stock.StoreUid;
      });
      if (existing) {
          existing.Stocklevel = added.stock.Stocklevel
      } else {
          warehousestock.stocks.push(added.stock)
      }
      return warehousestock;
  }
  export default entity;

I just followed the guide, and quite confused which step is wrong

Hi,

It looks like you have a small typo in the name of the proto file in the entity constructor: "stockudpate.proto". Where the file will probably be named stockupdate.proto.

It would be useful if the JavaScript SDK failed with a file not found error first, rather than no such service.