40
votes

I'm developing an Asp.Net Core 2 and Angular 5 project in visual studio 2017.

When I'm going to publish my project then the error 'The command "npm run build -- --prod" exited with code 1' show in error list window.
I created the project with Angular CLI in ASP.NET Core 2 Angular template link and everything was fine and the project run and publish correctly.
After a while, I don't know what exactly happens that cause the project doesn't publish.

In the npm-debug.log file

0 info it worked if it ends with ok
1 verbose cli [ 'C:\\Program Files\\nodejs\\node.exe',
1 verbose cli   'C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli   'run',
1 verbose cli   'build',
1 verbose cli   '--',
1 verbose cli   '--prod' ]
2 info using [email protected]
3 info using [email protected]
4 verbose stack Error: ENOENT: no such file or directory, open 'C:\Project\JWS\JWSApplication\package.json'
4 verbose stack     at Error (native)
5 verbose cwd C:\Project\JWS\JWSApplication
6 error Windows_NT 10.0.15063
7 error argv "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "run" "build" "--" "--prod"
8 error node v6.10.3
9 error npm  v3.10.10
10 error path C:\Project\JWS\JWSApplication\package.json
11 error code ENOENT
12 error errno -4058
13 error syscall open
14 error enoent ENOENT: no such file or directory, open 'C:\Project\JWS\JWSApplication\package.json'
15 error enoent ENOENT: no such file or directory, open 'C:\Project\JWS\JWSApplication\package.json'
15 error enoent This is most likely not a problem with npm itself
15 error enoent and is related to npm not being able to find a file.
16 verbose exit [ -4058, true ]
9
Try npm run build - - prodPraveen Kumar
@Praveen Kumar. I updated the NodeJS and the 'npm run build - - prod' command didn't fix the problem.Iman Bahrampour
remove bower_components and run npm installErnesto Alfonso

9 Answers

70
votes

Perform any of the following options as long as there is an error

  1. For passing an argument to build command:

    change 'npm run build -- --prod' to 'npm run build --prod' in the .csproj file

  2. Open ClientApp folder and Update project angular-cli with this CMD command:

    npm install --save-dev @angular/cli@latest

  3. Update visual studio NodeJS and npm from:

    Tools > Options > Projects and Solutions > Web Package Management > External Web Tools

If NodeJS and npm aren't installed on your environment path Add NodeJS and npm folder to the top of the list else move $(path) to the top of the list

enter image description here.

Thank @Praveen Kumar and @Yerkon

13
votes

Got same error, my environment:

.NET Core 2.1 RC-1
Angular v5.2.4
NPM v5.7.1
Node v8.11.2

And nothing mentioned above did not helped. Simple go to ".\ClientApp" //Angula-CLI project and run

npm run build

then you will see real errors - so that means simple you have some errors in code, so fix angular UI code and it will build fine :).

4
votes

Run:

npm run build:prod -- --prod

to see the actual error/errors that caused your build to fail.

NOTE: Notice the command has prod twice.

2
votes

Check this maybe you have problem with lack of memory

 "build": "node --max-old-space-size=4069 node_modules/@angular/cli/bin/ng build --prod",
2
votes

Error: The command "npm install" exited with code 1

Add environment variable, right click this PC

  • Go to Properties
  • Go to Advance tab
  • Click environment variable
  • In User variable section click new, Enter variable name "Path" and value C:\Users\User\AppData\Roaming\npm
  • One more - In User variable section click new, Enter variable name "Path" and value C:\Program Files\nodejs

If Path variable already there, then you can edit that variable add new path(value) by ; separation.

1
votes

Maybe in command line NodeJS version of Visual Studio is old. In your command output we can see:

[email protected]

Update NodeJS

1
votes

Try running: ng build "prod" and see what the actual error is.

1
votes

From the error in your output window, it seems that the npm build command is targeting the wrong directory and cannot find the package.json file to perform its build:

11 error code ENOENT
12 error errno -4058
13 error syscall open
14 error enoent ENOENT: **no such file or directory, open** 'C:\Project\JWS\JWSApplication\package.json'
15 error enoent ENOENT: no such file or directory, open 
'C:\Project\JWS\JWSApplication\package.json'
15 error enoent This is most likely not a problem with npm itself
15 error enoent and is related to npm not being able to find a file.
16 verbose exit [ -4058, true ]

I suspect your msbuild is targeting your root project folder instead of your ClientApp/SpaRoot folder where your package.json file will be located.(Guess based on similar experience since I do not have access to your .csproj to inspect your msbuild configurations).

If you open your .csproj file, you should see where the ClientApp/SpaRoot file is located. Ideally, it will be something like below:

<PropertyGroup>
        <SpaRoot>ClientApp\</SpaRoot>
        <DefaultItemExcludes>$(DefaultItemExcludes);$(SpaRoot)node_modules\**</DefaultItemExcludes>
</PropertyGroup>

Based on the above, the directory path to your ClientApp/SpaRoot folder will be configured which contains the package.json file and will be used when calling npm build during deployment:

<Target Name="PublishRunWebpack" AfterTargets="ComputeFilesToPublish">
        <!-- As part of publishing, ensure the JS resources are freshly built in production mode -->
        <Exec **WorkingDirectory="$(SpaRoot)"** Command="npm install" />
        <Exec **WorkingDirectory="$(SpaRoot)"** Command="npm run build --prod" />
        <Exec **WorkingDirectory="$(SpaRoot)"** Command="npm run build:ssr --prod" Condition=" '$(BuildServerSideRenderer)' == 'true' " />
        
        <!-- Include the newly-built files in the publish output -->
        <ItemGroup>
            <DistFiles Include="$(SpaRoot)dist\**; $(SpaRoot)dist-server\**" />
            <DistFiles Include="$(SpaRoot)node_modules\**" Condition="'$(BuildServerSideRenderer)' == 'true'" />
            <ResolvedFileToPublish Include="@(DistFiles->'%(FullPath)')" Exclude="@(ResolvedFileToPublish)">
                <RelativePath>%(DistFiles.Identity)</RelativePath>
                <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
                <ExcludeFromSingleFile>true</ExcludeFromSingleFile>
            </ResolvedFileToPublish>
        </ItemGroup>
    </Target>
1
votes

if deploying on netlify, use below command instead of npm run build while in site setting build & deploy.

CI= npm run build