Repository navigation
Closed
Labels
Description
-
OS?
Debian Jessie -
Versions. Please run
ng --version.
angular-cli: 1.0.0-beta.5
node: 5.11.1
os: linux x64 -
Repro steps. Was this an app that wasn't created using the CLI? What change did you
do on your code? etc.ng new ngtestmobile --mobilecd ngtestmobileng serve-- works normally.ng serve -prod-- doesn't work.
No changes in the code.
-
The log given by the failure. Normally this include a stack trace and some
more information.
$ ng serve -prod
Could not start watchman; falling back to NodeWatcher for file system events.
Visit http://ember-cli.com/user-guide/#watchman for more info.
Livereload server on http://localhost:49152
Serving on http://localhost:4200/
The Broccoli Plugin: [SourceMapConcat] failed with:
Error: ENOENT: no such file or directory, open '/home/daviddiaz/projects/tests/ngtestmobile/tmp/source_map_concat-input_base_path-dxPccJ6Q.tmp/0/vendor/reflect-metadata/Reflect.ts'
at Error (native)
at Object.fs.openSync (fs.js:584:18)
at Object.fs.readFileSync (fs.js:431:33)
at SourceMap.<anonymous> (/home/daviddiaz/projects/tests/ngtestmobile/node_modules/angular-cli/node_modules/broccoli-concat/node_modules/fast-sourcemap-concat/lib/source-map.js:282:29)
at Array.map (native)
at Object.Call (/home/daviddiaz/projects/tests/ngtestmobile/node_modules/es6-shim/es6-shim.js:289:14)
at Array.map (/home/daviddiaz/projects/tests/ngtestmobile/node_modules/es6-shim/es6-shim.js:1301:17)
at SourceMap._resolveSourcesContent (/home/daviddiaz/projects/tests/ngtestmobile/node_modules/angular-cli/node_modules/broccoli-concat/node_modules/fast-sourcemap-concat/lib/source-map.js:275:27)
at SourceMap._assimilateExistingMap (/home/daviddiaz/projects/tests/ngtestmobile/node_modules/angular-cli/node_modules/broccoli-concat/node_modules/fast-sourcemap-concat/lib/source-map.js:248:63)
at SourceMap.<anonymous> (/home/daviddiaz/projects/tests/ngtestmobile/node_modules/angular-cli/node_modules/broccoli-concat/node_modules/fast-sourcemap-concat/lib/source-map.js:219:12)
at SourceMap._cacheEncoderResults (/home/daviddiaz/projects/tests/ngtestmobile/node_modules/angular-cli/node_modules/broccoli-concat/node_modules/fast-sourcemap-concat/lib/source-map.js:125:16)
at SourceMap._addMap (/home/daviddiaz/projects/tests/ngtestmobile/node_modules/angular-cli/node_modules/broccoli-concat/node_modules/fast-sourcemap-concat/lib/source-map.js:218:10)
at SourceMap.addFileSource (/home/daviddiaz/projects/tests/ngtestmobile/node_modules/angular-cli/node_modules/broccoli-concat/node_modules/fast-sourcemap-concat/lib/source-map.js:92:19)
at SourceMap.addFile (/home/daviddiaz/projects/tests/ngtestmobile/node_modules/angular-cli/node_modules/broccoli-concat/node_modules/fast-sourcemap-concat/lib/source-map.js:70:15)
at /home/daviddiaz/projects/tests/ngtestmobile/node_modules/angular-cli/node_modules/broccoli-concat/concat.js:100:16
at Array.forEach (native)
The broccoli plugin was instantiated at:
at ConcatWithMaps.Plugin (/home/daviddiaz/projects/tests/ngtestmobile/node_modules/angular-cli/node_modules/broccoli-caching-writer/node_modules/broccoli-plugin/index.js:10:31)
at ConcatWithMaps.CachingWriter [as constructor] (/home/daviddiaz/projects/tests/ngtestmobile/node_modules/angular-cli/node_modules/broccoli-caching-writer/index.js:21:10)
at new ConcatWithMaps (/home/daviddiaz/projects/tests/ngtestmobile/node_modules/angular-cli/node_modules/broccoli-concat/concat.js:22:17)
at module.exports (/home/daviddiaz/projects/tests/ngtestmobile/node_modules/angular-cli/node_modules/broccoli-concat/index.js:26:10)
at Angular2App._getBundleTree (/home/daviddiaz/projects/tests/ngtestmobile/node_modules/angular-cli/lib/broccoli/angular2-app.js:424:20)
at Angular2App._buildTree (/home/daviddiaz/projects/tests/ngtestmobile/node_modules/angular-cli/lib/broccoli/angular2-app.js:159:21)
at new Angular2App (/home/daviddiaz/projects/tests/ngtestmobile/node_modules/angular-cli/lib/broccoli/angular2-app.js:53:23)
at module.exports (/home/daviddiaz/projects/tests/ngtestmobile/angular-cli-build.js:6:10)
at Class.module.exports.Task.extend.setupBroccoliBuilder (/home/daviddiaz/projects/tests/ngtestmobile/node_modules/angular-cli/node_modules/angular-cli/lib/models/builder.js:55:19)
at Class.module.exports.Task.extend.init (/home/daviddiaz/projects/tests/ngtestmobile/node_modules/angular-cli/node_modules/angular-cli/lib/models/builder.js:89:10)
at new Class (/home/daviddiaz/projects/tests/ngtestmobile/node_modules/angular-cli/node_modules/angular-cli/node_modules/core-object/core-object.js:18:12)
at Class.module.exports.Task.extend.run (/home/daviddiaz/projects/tests/ngtestmobile/node_modules/angular-cli/node_modules/angular-cli/lib/tasks/serve.js:15:19)
at /home/daviddiaz/projects/tests/ngtestmobile/node_modules/angular-cli/node_modules/angular-cli/lib/commands/serve.js:64:24
at lib$rsvp$$internal$$tryCatch (/home/daviddiaz/projects/tests/ngtestmobile/node_modules/angular-cli/node_modules/angular-cli/node_modules/rsvp/dist/rsvp.js:1036:16)
at lib$rsvp$$internal$$invokeCallback (/home/daviddiaz/projects/tests/ngtestmobile/node_modules/angular-cli/node_modules/angular-cli/node_modules/rsvp/dist/rsvp.js:1048:17)
at /home/daviddiaz/projects/tests/ngtestmobile/node_modules/angular-cli/node_modules/angular-cli/node_modules/rsvp/dist/rsvp.js:331:11
- Mention any other details that might be useful.
This problem only happen using the --mobile flag when tries to concat the vendor polyfills to build app-concat.js in index.html.
Reacted by Yaroslav, Roman Hotsiy, Yousuf Qureshi, 6i4NNi, SwagMuffinMcYoloPants, Masahiro Wakame and Maxime Bellec
Activity
sgbeal commentedon May 23, 2016
A workaround for desperate users: revert to ng 0.0.34. You won't get bundles (so 300+ requests at app startup), but it otherwise seems to work.
filipesilva commentedon May 23, 2016
I know which dependency broke it. It was SystemJS, and #839 should have fixed it for new projects... but apparently it didn't?
The issue described by @ddiazpinto seems to be different, and related to differences between mobile and non-mobile build steps.
filipesilva commentedon May 23, 2016
Guys, I just tried this with a branch new
1.0.0-beta.5project and everything seems work. Can I ask you to run these commands?@ddiazpinto your issue is different though, I need to research it more thoroughly.
sgbeal commentedon May 23, 2016
@filipesilva those exact steps work for me now (they didn't when i filed #888 a couple hours ago!), but it's not working in our project tree: we are stuck with beta.1 because of #833. Testing with that version and systemjs 0.19.26 (same as current ng new) we are still getting the missing map error:
So.... i mangled our tree to work around #833, just to try it out, but the error remains.
Any hint on which toggle i need here would be much appreciated! i have tried simply disabling maps via tsconfig, but it still wants the maps at bundle-time.
filipesilva commentedon May 23, 2016
@sgbeal for existing projects, the fix should be this:
tsconfig.jsonby removingmapRoot: https://github.com/angular/angular-cli/pull/839/files#diff-07a68a6787db2e2ff85093b708c543f4angular-cli-build.jsto also copy vendor map files: https://github.com/angular/angular-cli/pull/839/files#diff-7d92ebc9f7d559179bf60ebf7f3a4f43angular-cliversion to1.0.0-beta.5.sgbeal commentedon May 23, 2016
@filipesilva you are my hero :). That works... but we can't use beta.5 because of #833 (imports in environment.xxx.ts cannot be resolved, and we rely on that to import dev-time mocks and set up logging service log levels in prod) :(.
Just tried that same thing with beta 1, but it's still looking for maps :(.
sgbeal commentedon May 23, 2016
Just re-verified: the above fix works for us with beta.5 only if we remove all imports and references to globals (e.g. window and console) from environment.prod.ts. As soon as we reference, or try to import, any external symbols, they cannot be imported/resolved.
filipesilva commentedon May 23, 2016
As far as globals are concerned, they are a typings issue - compounded with bad module resolution for env files on the cli part.
You should be able to get around it with something like
declare var window: any;directly on the problematic env file.sgbeal commentedon May 23, 2016
That same set of config changes still works with 0.0.34, so we'll stick with that for the time being. Thank you once again for the quick assistance, @filipesilva :).
sgbeal commentedon May 23, 2016
(further commentary/details moved to #833, to stop hijacking this thread.)
sgbeal commentedon May 23, 2016
CORRECTION: the above-mentioned config changes lead to (build -prod) not failing, but it's missing our core-most JS files, e.g. system.js and rxjs are now missing, so index.html cannot find them:
Reverting to beta.1 leads to it the build process looking for .map files (tried systemjs .26 and .27). Reverting to 0.0.34 (without bundling) and it all works again.
ddiazpinto commentedon May 23, 2016
Hi @filipesilva
The problem only happen using the
--mobileflag during the creation of a new project. Without this flag, everything is working for me. With the mobile flag,build -prodandserve -prodtries to bundle all the vendor dependencies intoapp-concat.jswhere the process fails because is trying to includeReflect.tsthat isn't copied into vendor.The error reported by @Codenator81 and @zorthgo is different than mine like we see in the error log.
hartz89 commentedon May 23, 2016
Not sure if this helps, but I can run
ng build -prodlocally (OSX 10.11.5 x64, Node 4.4.3) with no issues, but then get the same sourcemap issue as the others when running on my build machine (Linux 4.4.5 x64, Node 4.4.1).ddiazpinto commentedon May 23, 2016
@hartz89 Did you generate the project with the
--mobileflag?hartz89 commentedon May 23, 2016
@ddiazpinto No I didn't.
clarkmalmgren commentedon May 24, 2016
I was able to address this issue by doing a
ng initin my project, merging all of the contents and then addressing the missing.mapimports. Specifically, inangular-cli-build.jsinside myvendorNpmFilesI had to change things likeinto
That did the trick. Hope that helps.
This only happened for me though when upgrading from 0.0.39 to 1.0.0-beta.5.
sgbeal commentedon May 24, 2016
@clarkmalmgren make sure that the generated build actually works. In my case it runs to completion but generates an incomplete tree (missing systemjs and rxjs, which it fails to copy over). Sadly, it worked fine with beta1 until the end of last week :(.
coryrylan commentedon May 24, 2016
Had similar map file issues that I was able to fix as suggestions above. The prod serve now works but now the app when loaded never runs and there are no errors. Almost like the app isn't bootstrapping.
sgbeal commentedon May 24, 2016
@splintercode can you run it with the network tab of your dev tools open and report which (if any) files are not being transmitted? Your problem sounds identical to mine (systemjs, rxjs, and others not being copied by the build process, and are needed for bootstrapping).
Tusabras commentedon May 24, 2016
i am trying a run a deploy of mobile toolkit and it gives me this error:
app-concat.js:7 Uncaught ReferenceError: require is not defined
any idea?
serhiisol commentedon May 24, 2016
Have same problem with
-prodoption, but in my case not all of my vendors were copied:ng serveng serve -prodRainerAtSpirit commentedon May 24, 2016
@ddiazpinto
For projects that have been created with the
--mobileflag and fail when usingng build -prodorng serve -prodtry adding thetsextension inangular-cli-build.jsFor whatever reason the system is trying to access some
tsfiles during build.ddiazpinto commentedon May 24, 2016
@RainerAtSpirit Yes, I have tested exactly this a couple of days ago and it works, but I don't think that be the right way. Why any
tswould be necessary to bundleapp-concat.jsinstead of thejsversion?thorstenschaefer commentedon May 24, 2016
I got the prod build working using the 3 changes recommended by @filipesilva. However, I'm not sure how to integrate dependencies for 3rd party libraries. E.g., I'm using ng2-charts, which itself depends on chart.js. In the development build, I'm referencing the bundle provided by chart.js within the index.html (
<script src="vendor/chart.js/dist/Chart.bundle.min.js"></script>). However, using the production build, this file gets removed. Is there a way to include those dependencies anyway (except from using a CDN)?coryrylan commentedon May 24, 2016
@thorstenschaefer I have gotten chartjs imported successfully in this demo here: https://github.com/splintercode/focus
3rd party dependencies have to be registered in this way so the compiler/tree shaker knows you are using it in your app. If they don't see it imported/registered they shake out the code because it is unused.
angular-cli-build.js(chartjs installed via npm)system-config.tsfile.jbouzekri commentedon May 25, 2016
I have the same kind of issue when trying to build for prod with
lodash:And my system js config :
And my import in ts file :
This is working file in
devenvironment but I get this error when tryingng build -prod:Fix ng build --prod issue
jd4u commentedon May 29, 2016
Facing the error similar to second post in this issue here.
I noted the following in error details.
Error: ENOENT: no such file or directory, open 'J:\ui6\tmp\bundle_plugin-input_base_path-Myy6wmHy.tmp\0\vendor\@angular2-material\toolbar\usr\local\google\home\jelbourn\material2\tmp\broccoli_type_script_compiler-input_base_path-IydvmmBU.tmp\0\components\toolbar\toolbar.js.map'\usr\local\google\home\jelbourn\material2\//# sourceMappingURL=/usr/local/google/home/jelbourn/material2/tmp/broccoli_type_script_compiler-input_base_path-IydvmmBU.tmp/0/components/toolbar/toolbar.js.map@filipesilva , in my case, it looks to me, the approach to calculate the source map path need to fix.
hmrc87 commentedon May 30, 2016
I turned off sourceMaps and all accompanied settings in tsconfig.json
Still an error
tsconfig.json (relevant parts)
I also tried generating a completely new project with beta 5 and this kinda works. I created the project with an older version von angular-cli (I think it was beta 4). So this might be a cause
fix(mobile): add missing vendor file to build
filipesilva commentedon May 31, 2016
Apologies for being so late in getting back to this topic.
@ddiazpinto the solution presented by @RainerAtSpirit seems to be working for me as well. I believe the TS file is needed for one of the extra plugins that the mobile mode uses for builds. I'll add in a PR with that change for new projects.
@jbouzekri could you put up a repo so I can have a look and try to fix?
@jd4u you're right in saying that the source map is wrong. I believe at the time
angular2-materialwas created with the CLI and thus had the source-maps messed up at the time. Can you try again with their latest version, and if the problem persists can you open an issue on angular2-material repo?@hmrc87 That issue is due to the project having initially been created with beta.4. The steps in #847 (comment) should fix it.
hmrc87 commentedon Jun 1, 2016
Thank you Filipe,
I added beta5 to the package.json, removed the mapRoot:"" line from tsconfig.json and added sourceMaps to cli-build but noticed something I dont really understand
ng builld --prodgenerates _no folder @angular in dist/vendorDo I need to have @angular in the vendor folder or does the prod-built squash everything together in main.js (Mine is like 30k lines of code for a quite small project).
When I built without prod all the vendor-files appear in the dist-folder including the sourcemaps. Where is the difference in the cli-tool building process between --prod and non-prod? I saw that in prod-mode the bundler will gather all files under app and put them into main.js
I played around with the GLOB-syntaxc in angular-cli-build.js and find it somehow weird:
** in "non-prod" mode it works like expected
ddiazpinto commentedon Jun 1, 2016
@filipesilva Thank you. Even if adding
tsto vendor build fixes the issue, still seems weird the need of Reflect.ts in a process that only bundles all the vendor dependencies into one single file. Isn't it?But thank you again ;)
filipesilva commentedon Jun 2, 2016
@hmrc87
-proddoes squash everything into a single file (main.jsformain.tsand all dependencies,app/index.jsfor all app code). The command itself does a series of brocolli funnels, but basically what it boils down to is that none of thejsandjs.mapend up in vendor, but if you have other stuff there it will still be copied (this is needed for some packages, for instance if it hascssfiles).@ddiazpinto I haven't fully looked at the logic behind the mobile builds, but I suspect it's related with the offline compiler and how it's importing dependencies.
hmrc87 commentedon Jun 2, 2016
@filipesilva Thank you for the explanation. So I kinda got it to serve/build without an error but now nothing happens. The app does not load, there is no console output at "ng serve --prod", main.js is loaded according to the network tab. The main.js is 30k lines long and about 1.7MB large.
How could I debug it? I suppose it has something to do with my dependencies like:
sgbeal commentedon Jun 2, 2016
i was able to reproduce the exact same error (or lack thereof) as @hmrc87 yesterday - blank page, no error messages. To get that far i had to move all my 3rd-party imports (jquery, bootstrap, etc) from index.html to systemjs, and add an (import 'jquery' (etc)) call in index.ts to tell the bundler to include them (as suggested in an earlier comment in this thread). Build runs w/o an error but serving just delivers a blank page with no errors.
hmrc87 commentedon Jun 2, 2016
@sgbeal Yes, now I am in the same situation. I have included jQuery, bootstrap, chartjs in my angular-cli-build.js. I am not sure if jQuery for example has been correclty funneled into main.js since a Search within that file for "jQuery" does not bring up any result.
filipesilva commentedon Jun 2, 2016
@hmrc87 @sgbeal what you describe seems to be related to #951. Can you have a look there?
Basically it seems that SystemJS bundling might not go very smoothly if the module format isn't specified in
system-config.js. I am unsure if it's a problem with CLI usage of SystemJS builder, or an issue with SystemJS itself, but have it set for myself to investigate further.Codenator81 commentedon Jun 2, 2016
@filipesilva Is this is issue in
system-config.jsit should be configured in right way when I dong newSo I think this is still related to
angular-clifilipesilva commentedon Jun 2, 2016
@Codenator81 the initial
system-config.jsis configured correctly initially, but as people add 3rd party libraries there isn't much we can do to auto-configure it. Different libraries have different SystemJS configuration.kylecordes commentedon Jun 2, 2016
@filipesilva This is a hard problem but also an area where Angular CLI faces an uphill battle. Why? Because the most obvious competition, webpack, most of the time "just works". It bundles common JS modules resolved in the standard node way, the enormous number of packages out there published in the standard node way typically work the first time without any package specific configuration, without the user even knowing that there exists such a thing as different library module types. Now course there are lots of downsides there, lack of tree shaking with common JS modules etc. So clearly something better is needed. But to be that better thing, and gain a high "market share", it seems to me that installing at least the hundred most common add-ons needs to work very easily out of the box. I don't really know the goals of the project though, so these are just ideas floating out there, hope this helps.
fix(mobile): add missing vendor file to build
fix(mobile): add missing vendor file to build (#972)
thorstenschaefer commentedon Jun 3, 2016
I totally agree with @kylecordes. I'm new to JS/Angular development and chose CLI as it sounds good to have a solid frame for projects/builds. However, after using it in a few toy projects to learn, it essentially just postpones the issues: on the positive side I get a nice base project and can easily generate routes/componets/etc. However, it seems to me that many of the github starter projects for Angular2 also deliver that. And when it comes to integrating 3rd party libraries, it's really painful. Basically every module has a different way to integrating it, so as soon as I want to use another library which I haven't used before, I know I'll spend probably the rest of the day trying out various modifications and browsing for solutions. Maybe it's just a personal issue of not having the background about the different kinds of JS modules and their loaders, but whenever I'm searching for a solution, I find a lot of other posts with a similar issue, so this might affect a large number of potential CLI users.
IMO what's needed urgently is at least some documentation regarding which modifications are necessary depending on the module type etc. - currently, the 3rd party integration site just lists 2 examples and I was lost after trying out the first module which was not listed there.
fix(mobile): add missing vendor file to build (angular#972)
fix(mobile): add missing vendor file to build (angular#972)
feat(@angular-devkit/build-angular): allow optional karma watch
feat(@angular-devkit/build-angular): allow optional karma watch
fix(@angular-devkit/build-angular): allow optional karma watch
angular-automatic-lock-bot commentedon Sep 5, 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.