You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Ng Generator does not always save components in correct directory #7377
It's hard to give repo steps because I haven't discovered exactly what I have to do to reproduce.
However, once the behaviour starts for a project, it continues to behave this way. The only way I have found to fix it is to start a completely new project and copy all my code over.
I cd to a module directory in my project eg: app/admin
I create a new component, eg ng g c users
Instead of creating the new component inside app/admin/users, it creates it inside app, eg app/users
In addition it creates an incorrect import statement in app.module, eg: import { UsersComponent } from './admin/src/app/users/users.component';
I have seen this happen twice now. I can be working with a project for months and months with it working correctly, then one day it just stops working the way it should. The only way I have been able to fix it is to generate a completely new project and copy all my code over to the new project.
The log given by the failure.
N/A
Desired functionality.
It should create the component inside the admin directory, eg: app/admin/users
and it should create a well formed import statement in admin.module, eg: import { UsersComponent } from './users/users.component';
Mention any other details that might be useful.
When I create a brand new project it does what I want it to. I have no idea what I do to provoke this behaviour. I have gone through the following files with a fine tooth comb and can't find anything wrong:
For the wrong import path, Issue #7135 and Pull Requests #7284 and #7090 are related here. Already reported since versions 1.2.x. This is just a duplicate of an existing issue. Fixes and new implementation are already on progress being done by @Brocco
@grizzm0 Yes it will work on the root of the project. But what if you have complex directory structure inside the src/app directory? It should be automatically done by the CLI tool itself to correctly resolve the path. This was a regression appeared on what i don't know version.
@exequiel09 I was simply explaining why the error happens and how he can solve it for now. :) This is how ng is supposed to be used. From the looks of the other issues it seems like it'll be "fixed" tho.
I don't see what a complex folder structure has to do with anything other than auto-completing with tab in the terminal.
@grizzm0 this is not how Ng is supposed to work. For the last several months it has worked as I wanted it to in my project. If I start a brand new project, it works how I want it to.
What I don't understand here is why it just starts happening after it has been working perfectly for months on end.
In terms of a complex folder structure, try writing ng g c contract/subcontract/subcontract-new/supplier-select/new-supplier/new-supplier-with-name/new-supplier-result
I know at least one developer who discarded angular in favour of react on the basis of this issue alone.
@exequiel09 the issue I am having is actually not the same as #7135.
I am finding it does create the wrong path in app.module but not in the same format as above.
I could actually live with this behaviour although it would be annoying.
The bigger issue is that it creates the component in the wrong directory as described above. This is killing me as it used to work and I'm not sure why it stopped.
We just ran into the src in path thing... Now, I've NEVER used ng generate outside of the root directory, and I've ALWAYS used directory paths. Such as:
ng new foobar
ng g module blah
ng g component blah/blah-blah --module blah
All works, directories are good.
It won't find the module blah when generating the component unless you tell it to create the module in blah/ and refer to the module with its name blah...
Sorry for the blathering on, with the blah blah and all.
Bottom line, if you then start doing cd into directories, it's not a good thing, it'll try relative pathing but then put src/app in there and screw it up.
Is this new? I dunno. But that's the behavior I see.
FWIW: for me the path is duplicated. OS: Win 10, node 8.9.2, ng-cli: 1.6.0:
[duricz@msgn07241 ~/temp/my-new-app]$ ng g m new-module
create src/main/frontend/src/main/frontend/app/new-module/new-module.module.ts (193 bytes)
[duricz@msgn07241 ~/temp/my-new-app]$
FWIW my root path in .angular-cli.json is set to src/main/frontend;
@hansl :
It's now May 2018. I reported this in August 2017. Last update here was Feb this year. In Feb you said you would get to it soon.
Look I know the CLI team has been working hard and has made some fantastic additions and fixed up a lot of stuff. I'm not complaining but it would be nice to have some sort of update now and again 😄
@hansl@filipesilva@Brocco It looks like this has been fixed. I haven't tested all use cases but I just tried it out the other day and everything worked as expected. I can't tell which version because I just haven't tried again until just recently.
Activity
exequiel09 commentedon Aug 14, 2017
For the wrong import path, Issue #7135 and Pull Requests #7284 and #7090 are related here. Already reported since versions 1.2.x. This is just a duplicate of an existing issue. Fixes and new implementation are already on progress being done by @Brocco
grizzm0 commentedon Aug 14, 2017
The reason it doesn't work as intended is because you're using cd. Use ng in the root of your project and it'll work as intended.
Run the following from the root:
ng g c admin/usersexequiel09 commentedon Aug 14, 2017
@grizzm0 Yes it will work on the root of the project. But what if you have complex directory structure inside the
src/appdirectory? It should be automatically done by the CLI tool itself to correctly resolve the path. This was a regression appeared on what i don't know version.grizzm0 commentedon Aug 14, 2017
@exequiel09 I was simply explaining why the error happens and how he can solve it for now. :) This is how ng is supposed to be used. From the looks of the other issues it seems like it'll be "fixed" tho.
I don't see what a complex folder structure has to do with anything other than auto-completing with tab in the terminal.
chriscurnow commentedon Aug 14, 2017
@grizzm0 this is not how Ng is supposed to work. For the last several months it has worked as I wanted it to in my project. If I start a brand new project, it works how I want it to.
What I don't understand here is why it just starts happening after it has been working perfectly for months on end.
In terms of a complex folder structure, try writing
ng g c contract/subcontract/subcontract-new/supplier-select/new-supplier/new-supplier-with-name/new-supplier-resultI know at least one developer who discarded angular in favour of react on the basis of this issue alone.
chriscurnow commentedon Aug 16, 2017
@exequiel09 the issue I am having is actually not the same as #7135.
I am finding it does create the wrong path in app.module but not in the same format as above.
I could actually live with this behaviour although it would be annoying.
The bigger issue is that it creates the component in the wrong directory as described above. This is killing me as it used to work and I'm not sure why it stopped.
krimple commentedon Aug 28, 2017
We just ran into the src in path thing... Now, I've NEVER used ng generate outside of the root directory, and I've ALWAYS used directory paths. Such as:
All works, directories are good.
It won't find the module
blahwhen generating the component unless you tell it to create the module inblah/and refer to the module with its nameblah...Sorry for the blathering on, with the blah blah and all.
Bottom line, if you then start doing cd into directories, it's not a good thing, it'll try relative pathing but then put src/app in there and screw it up.
Is this new? I dunno. But that's the behavior I see.
chriscurnow commentedon Oct 4, 2017
Any update on this issue?
chriscurnow commentedon Nov 23, 2017
We'd really like to know how you are going with this issue. When we are working on a complex app it would make it so much easier.
We all know some things can be really difficult to achieve but it was marked as urgent on 24 August.
Any sort of update would be much appreciated.
zladuric commentedon Dec 15, 2017
FWIW: for me the path is duplicated. OS: Win 10, node 8.9.2, ng-cli: 1.6.0:
FWIW my root path in
.angular-cli.jsonis set tosrc/main/frontend;5 remaining items
chriscurnow commentedon Feb 6, 2018
@hansl just interested. What's the priority on this issue now?
hansl commentedon Feb 7, 2018
@chriscurnow Priority is now based differently, so we don't put it ourselves anymore. Since @Brocco is assigned to your issue we'll get to it soon.
chriscurnow commentedon Feb 7, 2018
@hansl Thanks 😄
chriscurnow commentedon May 22, 2018
@hansl :
It's now May 2018. I reported this in August 2017. Last update here was Feb this year. In Feb you said you would get to it soon.
Look I know the CLI team has been working hard and has made some fantastic additions and fixed up a lot of stuff. I'm not complaining but it would be nice to have some sort of update now and again 😄
chriscurnow commentedon Jul 9, 2018
@hansl @filipesilva @Brocco It looks like this has been fixed. I haven't tested all use cases but I just tried it out the other day and everything worked as expected. I can't tell which version because I just haven't tried again until just recently.
angular-automatic-lock-bot commentedon Sep 8, 2019
This issue has been automatically locked due to inactivity.
Please file a new issue if you are encountering a similar or related problem.
Read more about our automatic conversation locking policy.
This action has been performed automatically by a bot.