jhipster / jhipster-core

JHipster Domain Language, used by JHipster UML and JDL-Studio to generate entities
Apache License 2.0
345 stars 116 forks source link

JHipster Application without server side + JDL with microservices : NPM build is broken #416

Open juliensadaoui opened 4 years ago

juliensadaoui commented 4 years ago
Overview of the issue

I have generated a new application without server side. When i'm trying to import a JDL file with entities linked at a microservice, it fails with the following information.

INFO! Using JHipster version installed locally in current project's node_modules
INFO! Executing import-jdl ./crm.jh
INFO! Options: force: true, from-cli: true, inline:
INFO! Found .yo-rc.json on path. This is an existing app
INFO! The JDL is being parsed.
INFO! Found entities: Product, Customer, ProductOrder, OrderItem.
INFO! The JDL has been successfully parsed
INFO! Generating 4 entities.

Found the .jhipster/Product.json configuration file, entity can be automatically generated!

The entity Product is being updated.

Found the .jhipster/Customer.json configuration file, entity can be automatically generated!

The entity Customer is being updated.

Found the .jhipster/ProductOrder.json configuration file, entity can be automatically generated!

The entity ProductOrder is being updated.

Found the .jhipster/OrderItem.json configuration file, entity can be automatically generated!

The entity OrderItem is being updated.

   create src/main/webapp/app/entities/product/product.component.html
   create src/main/webapp/app/entities/product/product-detail.component.html
   create src/main/webapp/app/entities/product/product-update.component.html
   create src/main/webapp/app/entities/product/product-delete-dialog.component.html
    force src/main/webapp/app/layouts/navbar/navbar.component.html
   create src/main/webapp/app/entities/customer/customer.component.html
   create src/main/webapp/app/entities/customer/customer-detail.component.html
   create src/main/webapp/app/entities/customer/customer-update.component.html
   create src/main/webapp/app/entities/customer/customer-delete-dialog.component.html
   create src/main/webapp/app/entities/product/product.module.ts
   create src/main/webapp/app/entities/product/product.route.ts
   create src/main/webapp/app/shared/model/product.model.ts
   create src/main/webapp/app/entities/product/product.component.ts
   create src/main/webapp/app/entities/product/product-detail.component.ts
   create src/main/webapp/app/entities/product/product.service.ts
   create src/main/webapp/app/entities/product/product-update.component.ts
   create src/main/webapp/app/entities/product/product-delete-dialog.component.ts
   create src/test/javascript/spec/app/entities/product/product-detail.component.spec.ts
   create src/test/javascript/spec/app/entities/product/product.component.spec.ts
   create src/test/javascript/spec/app/entities/product/product.service.spec.ts
   create src/test/javascript/spec/app/entities/product/product-update.component.spec.ts
   create src/test/javascript/spec/app/entities/product/product-delete-dialog.component.spec.ts
    force src/main/webapp/app/entities/entity.module.ts
   create src/main/webapp/app/shared/model/enumerations/size.model.ts
   create src/main/webapp/i18n/en/size.json
   create src/main/webapp/app/entities/product-order/product-order.component.html
   create src/main/webapp/app/entities/product-order/product-order-detail.component.html
   create src/main/webapp/i18n/en/product.json
   create src/main/webapp/app/entities/product-order/product-order-update.component.html
   create src/main/webapp/app/entities/product-order/product-order-delete-dialog.component.html
    force src/main/webapp/i18n/en/global.json
   create src/main/webapp/app/entities/customer/customer.module.ts
   create src/main/webapp/app/entities/customer/customer.route.ts
   create src/main/webapp/app/shared/model/customer.model.ts
   create src/main/webapp/app/entities/customer/customer.component.ts
   create src/main/webapp/app/entities/customer/customer-detail.component.ts
   create src/main/webapp/app/entities/customer/customer.service.ts
   create src/main/webapp/app/entities/customer/customer-update.component.ts
   create src/main/webapp/app/entities/customer/customer-delete-dialog.component.ts
   create src/test/javascript/spec/app/entities/customer/customer-detail.component.spec.ts
   create src/test/javascript/spec/app/entities/customer/customer.component.spec.ts
   create src/test/javascript/spec/app/entities/customer/customer.service.spec.ts
   create src/test/javascript/spec/app/entities/customer/customer-update.component.spec.ts
   create src/test/javascript/spec/app/entities/customer/customer-delete-dialog.component.spec.ts
   create src/main/webapp/app/shared/model/enumerations/gender.model.ts
   create src/main/webapp/app/entities/order-item/order-item.component.html
   create src/main/webapp/app/entities/order-item/order-item-detail.component.html
   create src/main/webapp/app/entities/order-item/order-item-update.component.html
   create src/main/webapp/i18n/en/gender.json
   create src/main/webapp/app/entities/order-item/order-item-delete-dialog.component.html
   create src/main/webapp/i18n/en/customer.json
   create src/main/webapp/app/entities/product-order/product-order.module.ts
   create src/main/webapp/app/entities/product-order/product-order.route.ts
   create src/main/webapp/app/shared/model/product-order.model.ts
   create src/main/webapp/app/entities/product-order/product-order.component.ts
   create src/main/webapp/app/entities/product-order/product-order-detail.component.ts
   create src/main/webapp/app/entities/product-order/product-order.service.ts
   create src/main/webapp/app/entities/product-order/product-order-update.component.ts
   create src/main/webapp/app/entities/product-order/product-order-delete-dialog.component.ts
   create src/test/javascript/spec/app/entities/product-order/product-order-detail.component.spec.ts
   create src/test/javascript/spec/app/entities/product-order/product-order.component.spec.ts
   create src/test/javascript/spec/app/entities/product-order/product-order.service.spec.ts
   create src/test/javascript/spec/app/entities/product-order/product-order-update.component.spec.ts
   create src/test/javascript/spec/app/entities/product-order/product-order-delete-dialog.component.spec.ts
   create src/main/webapp/app/shared/model/enumerations/order-status.model.ts
   create src/main/webapp/i18n/en/orderStatus.json
   create src/main/webapp/i18n/en/productOrder.json
   create src/main/webapp/app/entities/order-item/order-item.module.ts
   create src/main/webapp/app/entities/order-item/order-item.route.ts
   create src/main/webapp/app/shared/model/order-item.model.ts
   create src/main/webapp/app/entities/order-item/order-item.component.ts
   create src/main/webapp/app/entities/order-item/order-item-detail.component.ts
   create src/main/webapp/app/entities/order-item/order-item.service.ts
   create src/main/webapp/app/entities/order-item/order-item-update.component.ts
   create src/main/webapp/app/entities/order-item/order-item-delete-dialog.component.ts
   create src/test/javascript/spec/app/entities/order-item/order-item-detail.component.spec.ts
   create src/test/javascript/spec/app/entities/order-item/order-item.component.spec.ts
   create src/test/javascript/spec/app/entities/order-item/order-item.service.spec.ts
   create src/test/javascript/spec/app/entities/order-item/order-item-update.component.spec.ts
   create src/test/javascript/spec/app/entities/order-item/order-item-delete-dialog.component.spec.ts
   create src/main/webapp/app/shared/model/enumerations/order-item-status.model.ts
   create src/main/webapp/i18n/en/orderItemStatus.json
   create src/main/webapp/i18n/en/orderItem.json
Entity Product generated successfully.
Entity Customer generated successfully.
Entity ProductOrder generated successfully.

Running `webpack:build` to update client app

Entity OrderItem generated successfully.

> jhipster@0.0.1-SNAPSHOT webpack:build /Users/julien/Development/jhipster/issue/client-without-server
> npm run cleanup && npm run webpack:build:main

> jhipster@0.0.1-SNAPSHOT cleanup /Users/julien/Development/jhipster/issue/client-without-server
> rimraf build/resources/main/static/ build/resources/main/aot

> jhipster@0.0.1-SNAPSHOT webpack:build:main /Users/julien/Development/jhipster/issue/client-without-server
> npm run webpack -- --config webpack/webpack.dev.js --env.stats=minimal

> jhipster@0.0.1-SNAPSHOT webpack /Users/julien/Development/jhipster/issue/client-without-server
> node --max_old_space_size=4096 node_modules/webpack/bin/webpack.js "--config" "webpack/webpack.dev.js" "--env.stats=minimal"

Webpack: Starting ...
Starting type checking service...
Webpack: Starting ...

  ✔ Compile modules
  ✔ Build modules
  ✔ Optimize modules
  ✔ Emit files

Webpack: Finished after 27.572 seconds.

 ERROR  Failed to compile with 3 errors                                                                                                                                                     0:27:55

These dependencies were not found:

* app/entities/crm/customer/customer.service in ./src/main/webapp/app/entities/product-order/product-order-update.component.ts
* app/entities/crm/product-order/product-order.service in ./src/main/webapp/app/entities/order-item/order-item-update.component.ts
* app/entities/crm/product/product.service in ./src/main/webapp/app/entities/order-item/order-item-update.component.ts

To install them, you can run: npm install --save app/entities/crm/customer/customer.service app/entities/crm/product-order/product-order.service app/entities/crm/product/product.service
   638 modules

ERROR in ./src/main/webapp/app/entities/product-order/product-order-update.component.ts
Module not found: Error: Can't resolve 'app/entities/crm/customer/customer.service' in '/Users/julien/Development/jhipster/issue/client-without-server/src/main/webapp/app/entities/product-order'

ERROR in ./src/main/webapp/app/entities/order-item/order-item-update.component.ts
Module not found: Error: Can't resolve 'app/entities/crm/product-order/product-order.service' in '/Users/julien/Development/jhipster/issue/client-without-server/src/main/webapp/app/entities/order-item'

ERROR in ./src/main/webapp/app/entities/order-item/order-item-update.component.ts
Module not found: Error: Can't resolve 'app/entities/crm/product/product.service' in '/Users/julien/Development/jhipster/issue/client-without-server/src/main/webapp/app/entities/order-item'

ERROR in /Users/julien/Development/jhipster/issue/client-without-server/src/main/webapp/app/entities/order-item/order-item-update.component.ts
ERROR in /Users/julien/Development/jhipster/issue/client-without-server/src/main/webapp/app/entities/order-item/order-item-update.component.ts(11,26):
TS2307: Cannot find module 'app/shared/model/crm/product.model'.

ERROR in /Users/julien/Development/jhipster/issue/client-without-server/src/main/webapp/app/entities/order-item/order-item-update.component.ts
ERROR in /Users/julien/Development/jhipster/issue/client-without-server/src/main/webapp/app/entities/order-item/order-item-update.component.ts(12,32):
TS2307: Cannot find module 'app/entities/crm/product/product.service'.

ERROR in /Users/julien/Development/jhipster/issue/client-without-server/src/main/webapp/app/entities/order-item/order-item-update.component.ts
ERROR in /Users/julien/Development/jhipster/issue/client-without-server/src/main/webapp/app/entities/order-item/order-item-update.component.ts(13,31):
TS2307: Cannot find module 'app/shared/model/crm/product-order.model'.

ERROR in /Users/julien/Development/jhipster/issue/client-without-server/src/main/webapp/app/entities/order-item/order-item-update.component.ts
ERROR in /Users/julien/Development/jhipster/issue/client-without-server/src/main/webapp/app/entities/order-item/order-item-update.component.ts(14,37):
TS2307: Cannot find module 'app/entities/crm/product-order/product-order.service'.

ERROR in /Users/julien/Development/jhipster/issue/client-without-server/src/main/webapp/app/entities/product-order/product-order-update.component.ts
ERROR in /Users/julien/Development/jhipster/issue/client-without-server/src/main/webapp/app/entities/product-order/product-order-update.component.ts(13,27):
TS2307: Cannot find module 'app/shared/model/crm/customer.model'.

ERROR in /Users/julien/Development/jhipster/issue/client-without-server/src/main/webapp/app/entities/product-order/product-order-update.component.ts
ERROR in /Users/julien/Development/jhipster/issue/client-without-server/src/main/webapp/app/entities/product-order/product-order-update.component.ts(14,33):
TS2307: Cannot find module 'app/entities/crm/customer/customer.service'.

ERROR in /Users/julien/Development/jhipster/issue/client-without-server/src/main/webapp/app/shared/model/customer.model.ts
ERROR in /Users/julien/Development/jhipster/issue/client-without-server/src/main/webapp/app/shared/model/customer.model.ts(1,31):
TS2307: Cannot find module 'app/shared/model/crm/product-order.model'.

ERROR in /Users/julien/Development/jhipster/issue/client-without-server/src/main/webapp/app/shared/model/order-item.model.ts
ERROR in /Users/julien/Development/jhipster/issue/client-without-server/src/main/webapp/app/shared/model/order-item.model.ts(1,26):
TS2307: Cannot find module 'app/shared/model/crm/product.model'.

ERROR in /Users/julien/Development/jhipster/issue/client-without-server/src/main/webapp/app/shared/model/order-item.model.ts
ERROR in /Users/julien/Development/jhipster/issue/client-without-server/src/main/webapp/app/shared/model/order-item.model.ts(2,31):
TS2307: Cannot find module 'app/shared/model/crm/product-order.model'.

ERROR in /Users/julien/Development/jhipster/issue/client-without-server/src/main/webapp/app/shared/model/product-order.model.ts
ERROR in /Users/julien/Development/jhipster/issue/client-without-server/src/main/webapp/app/shared/model/product-order.model.ts(2,28):
TS2307: Cannot find module 'app/shared/model/crm/order-item.model'.

ERROR in /Users/julien/Development/jhipster/issue/client-without-server/src/main/webapp/app/shared/model/product-order.model.ts
ERROR in /Users/julien/Development/jhipster/issue/client-without-server/src/main/webapp/app/shared/model/product-order.model.ts(3,27):
TS2307: Cannot find module 'app/shared/model/crm/customer.model'.
npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! jhipster@0.0.1-SNAPSHOT webpack: `node --max_old_space_size=4096 node_modules/webpack/bin/webpack.js "--config" "webpack/webpack.dev.js" "--env.stats=minimal"`
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the jhipster@0.0.1-SNAPSHOT webpack script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/julien/.npm/_logs/2019-12-17T23_27_56_233Z-debug.log
npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! jhipster@0.0.1-SNAPSHOT webpack:build:main: `npm run webpack -- --config webpack/webpack.dev.js --env.stats=minimal`
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the jhipster@0.0.1-SNAPSHOT webpack:build:main script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/julien/.npm/_logs/2019-12-17T23_27_56_290Z-debug.log
npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! jhipster@0.0.1-SNAPSHOT webpack:build: `npm run cleanup && npm run webpack:build:main`
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the jhipster@0.0.1-SNAPSHOT webpack:build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/julien/.npm/_logs/2019-12-17T23_27_56_376Z-debug.log
INFO! Congratulations, JHipster execution is complete!
INFO! Congratulations, JHipster execution is complete!
INFO! Congratulations, JHipster execution is complete!
INFO! Congratulations, JHipster execution is complete!
Motivation for or Use Case

I would like to generate an angular application without server side.

Reproduce the error
Suggest a Fix

Quick fix: I changed the applicationType option - gateway instead of monolith

JHipster Version(s)

generated with 6.5.1

JHipster configuration

Command: jhipster --skip-server --db sql --auth jwt

{
  "generator-jhipster": {
    "promptValues": {
      "nativeLanguage": "en"
    },
    "jhipsterVersion": "6.5.1",
    "applicationType": "monolith",
    "baseName": "jhipster",
    "useSass": true,
    "clientPackageManager": "npm",
    "clientFramework": "angularX",
    "clientTheme": "none",
    "clientThemeVariant": "",
    "authenticationType": "jwt",
    "cacheProvider": "no",
    "databaseType": "sql",
    "devDatabaseType": "sql",
    "prodDatabaseType": "sql",
    "creationTimestamp": 1576624471664,
    "testFrameworks": [],
    "jhiPrefix": "jhi",
    "entitySuffix": "",
    "dtoSuffix": "DTO",
    "otherModules": [],
    "enableTranslation": true,
    "nativeLanguage": "en",
    "languages": ["en"],
    "blueprints": [],
    "skipServer": true
  }
}
Entity configuration(s) entityName.json files generated in the .jhipster directory
entity Product {
    name String required
    description String
    price BigDecimal required min(0)
    size Size required
    image ImageBlob
}
enum Size {
    S, M, L, XL, XXL
}
entity Customer {
    firstName String required
    lastName String required
    gender Gender required
    email String required pattern(/^[^@\s]+@[^@\s]+\.[^@\s]+$/)
    phone String required
    addressLine1 String required
    addressLine2 String
    city String required
    country String required
}
enum Gender {
    MALE, FEMALE, OTHER
}
entity ProductOrder {
    placedDate Instant required
    status OrderStatus required
    code String required
    invoiceId String
}

enum OrderStatus {
    COMPLETED, PENDING, CANCELLED
}
entity OrderItem {
    quantity Integer required min(0)
    totalPrice BigDecimal required min(0)
    status OrderItemStatus required
}
enum OrderItemStatus {
    AVAILABLE, OUT_OF_STOCK, BACK_ORDER
}
relationship ManyToOne {
 OrderItem{product(name) required} to Product
}
relationship OneToMany {
   Customer{order} to ProductOrder{customer(email) required},
   ProductOrder{orderItem} to OrderItem{order(code) required} ,
}
service Product, Customer, ProductOrder, OrderItem with serviceClass
paginate Product, Customer, ProductOrder, OrderItem with pagination
microservice Customer, Product, ProductOrder, OrderItem with crm
Browsers and Operating Systemgit: 2.23.0

OS: macOS Catalina (10.15.1)

node: v12.13.0

npm: 6.13.4

yeoman: 3.1.1

MathieuAA commented 4 years ago

Thanks @juliensadaoui, I'll look into your logs once I get some sleep :)

MathieuAA commented 4 years ago

I think I've got it... When one generates a microservice application, then the clientRootFolder option is set to the application's name. This is automatic because, well, nobody sets this option manually when designing app. However here there's no application definition, just entities, relationships and options. In your provided .yo-rc.json file, I see the application is a monolith. That's what JCore will read and remember.

Have you tried using the clientRootFolder option for your entities?