node:6.9.4 docker container
[email protected]
[email protected]
After an upgrade to 1.0.0-beta.26 from 1.0.0-beta.24 the app fails to build.
Build always starts with a clean docker container in which the following steps are run:
FROM node:6.9.4
WORKDIR /root/
RUN npm install [email protected] -g
COPY package.json ./package.json
RUN npm install
COPY src ./src/
COPY e2e ./e2e/
COPY angular-cli.json ./angular-cli.json
COPY protractor.conf.js ./protractor.conf.js
COPY karma.conf.js ./karma.conf.js
COPY tslint.json ./tslint.json
RUN ng build --prod
Prod build works when running on the development machine with Windows 7
Cannot read property 'input' of null
TypeError: Cannot read property 'input' of null
at ObjectSchemaTreeNode._set (/root/node_modules/@ngtools/json-schema/src/sc
hema-tree.js:347:132)
at new ObjectSchemaTreeNode (/root/node_modules/@ngtools/json-schema/src/sch
ema-tree.js:331:14)
at OneOfSchemaTreeNode.NonLeafSchemaTreeNode._createChildProperty (/root/nod
e_modules/@ngtools/json-schema/src/schema-tree.js:244:24)
at /root/node_modules/@ngtools/json-schema/src/schema-tree.js:260:26
at Array.map (native)
at new OneOfSchemaTreeNode (/root/node_modules/@ngtools/json-schema/src/sche
ma-tree.js:259:48)
at ArraySchemaTreeNode.NonLeafSchemaTreeNode._createChildProperty (/root/nod
e_modules/@ngtools/json-schema/src/schema-tree.js:244:24)
at ArraySchemaTreeNode._set (/root/node_modules/@ngtools/json-schema/src/sch
ema-tree.js:434:39)
at new ArraySchemaTreeNode (/root/node_modules/@ngtools/json-schema/src/sche
ma-tree.js:414:14)
at ObjectSchemaTreeNode.NonLeafSchemaTreeNode._createChildProperty (/root/no
de_modules/@ngtools/json-schema/src/schema-tree.js:244:24)
at ObjectSchemaTreeNode._set (/root/node_modules/@ngtools/json-schema/src/sc
hema-tree.js:347:47)
at new ObjectSchemaTreeNode (/root/node_modules/@ngtools/json-schema/src/sch
ema-tree.js:331:14)
at ArraySchemaTreeNode.NonLeafSchemaTreeNode._createChildProperty (/root/nod
e_modules/@ngtools/json-schema/src/schema-tree.js:244:24)
at ArraySchemaTreeNode._set (/root/node_modules/@ngtools/json-schema/src/sch
ema-tree.js:434:39)
at new ArraySchemaTreeNode (/root/node_modules/@ngtools/json-schema/src/sche
ma-tree.js:414:14)
at RootSchemaTreeNode.NonLeafSchemaTreeNode._createChildProperty (/root/node
_modules/@ngtools/json-schema/src/schema-tree.js:244:24)
at RootSchemaTreeNode.ObjectSchemaTreeNode._set (/root/node_modules/@ngtools
/json-schema/src/schema-tree.js:347:47)
at RootSchemaTreeNode.ObjectSchemaTreeNode [as constructor] (/root/node_modu
les/@ngtools/json-schema/src/schema-tree.js:331:14)
at new RootSchemaTreeNode (/root/node_modules/@ngtools/json-schema/src/schem
a-tree.js:478:16)
at GeneratedSchemaClass.SchemaClassBase (/root/node_modules/@ngtools/json-sc
hema/src/schema-class-factory.js:66:29)
at new GeneratedSchemaClass (/root/node_modules/@ngtools/json-schema/src/sch
ema-class-factory.js:165:20)
at new CliConfig (/root/node_modules/angular-cli/models/config/config.js:24:
24)
at Function.CliConfig.fromConfigPath (/root/node_modules/angular-cli/models/
config/config.js:99:16)
at Function.CliConfig.fromProject (/root/node_modules/angular-cli/models/con
fig.js:63:44)
at Class.run (/root/node_modules/angular-cli/tasks/build-webpack.js:14:73)
at Class.buildRun (/root/node_modules/angular-cli/commands/build.run.js:39:2
2)
at Class.run (/root/node_modules/angular-cli/commands/build.js:38:47)
at Class.
mmand.js:147:17)
at process._tickCallback (internal/process/next_tick.js:103:7)
The command '/bin/sh -c ng build --prod' returned a non-zero code: 1
angular-cli.json
{
"project": {
"version": "1.0.0-alpha.2",
"name": "core-ui"
},
"apps": [
{
"root": "src",
"outDir": "dist",
"genDir": "gen",
"assets": ["assets"],
"index": "index.html",
"main": "main.ts",
"test": "test.ts",
"tsconfig": "tsconfig.json",
"prefix": "app",
"mobile": false,
"styles": [
"scss/style.scss"
],
"scripts": [
"../node_modules/pace-js/pace.min.js",
"../node_modules/chart.js/dist/Chart.bundle.min.js",
"../node_modules/chart.js/dist/Chart.min.js"
],
"environments": {
"source": "environments/environment.ts",
"dev": "environments/environment.ts",
"prod": "environments/environment.prod.ts"
}
}
],
"e2e": {
"protractor": {
"config": "./protractor.conf.js"
}
},
"test": {
"karma": {
"config": "./karma.conf.js"
}
},
"defaults": {
"styleExt": "scss",
"prefixInterfaces": false
}
}
I don't know the cause of the issue as i did not invest enough time to understand the parsing of the configuration but if I change Line 347 in @ngtools/json-schema/src/schema-tree.js from
this._children[name_1] = this._createChildProperty(name_1, value ? value[name_1] : null, forward ? forward.children[name_1] : null, propertySchema);
to this:
this._children[name_1] = this._createChildProperty(name_1, value ? value[name_1] : null, forward && forward.children ? forward.children[name_1] : null, propertySchema);
it works again
Can you show me your angular-cli.json
? Maybe you have a property there that's not supported anymore or something.
I actually provided it in the issue description under "Mention any other details that might be useful.".
I'm having the same exact problem.
I guess this is the root cause (related to Docker, not sure about other cases).
When I have angular app under $HOME path, I got the same exact problem.
When I move the angular app out of $HOME path, it works as expected, no error.
@maylukas this configuration should work with your project:
FROM node:6.9.4
RUN mkdir -p /opt/app
WORKDIR /opt/app
RUN npm install [email protected] -g
COPY package.json ./package.json
RUN npm install
COPY src ./src/
COPY e2e ./e2e/
COPY angular-cli.json ./angular-cli.json
COPY protractor.conf.js ./protractor.conf.js
COPY karma.conf.js ./karma.conf.js
COPY tslint.json ./tslint.json
RUN ng build --prod
@hoatle Thanks for taking the time to share this, can't say how happy I am to have this working finally! :)
Today I've updated angular-cli and now I get this same error.
@giertych97 That's unrelated to this particular issue. See here for a fix for the new release breaking builds: https://github.com/angular/angular-cli/issues/4326#issuecomment-276819350
@filipesilva I have had the same issue in my production builds to Heroku since Beta 25 (Beta 24 & earlier worked great, however I just updated to Beta 28 & can confirm the issue still exists).
2017-02-02T13:23:29.383781+00:00 app[web.1]: TypeError: Cannot read property 'input' of null
2017-02-02T13:23:29.383783+00:00 app[web.1]: at new ObjectSchemaTreeNode (/app/node_modules/@ngtools/json-schema/src/schema-tree.js:331:14)
I believe it may have something to do with the JSON Schema feature added in Beta 25:
@ngtools/json-schema: Introduce a separate package for JSON schema. (#3927) (74f7cdd)
This does not happen when I kick off a build in my local environment npm start
- all things are working as expected on localhost:4300. It is only when I deploy & Heroku kicks off the npm start
that it will fail on the ng build
(it breaks before it is able to create a /dist folder)
This type of error message is similar to the ones seen when an npm package is missing a Types declaration file - unfortunately, one does not exist for the JSON Schema package. Maybe this is related to that? Another hunch is that it may be related to Linux.
I made a comment on this in another thread a while back but didn't follow up until just now - here's a link for additional context
Hopefully this provides some additional insight to the bug
Maybe this will help. I accidentally called ng init
in Нome directory, after call the ng
in any other directory caused the error (even when call ng --version
). After deleting ng files from the home directory. ng
runs without errors
@dustintheweb did you find any solution?
@dlimkin Thank you, it solved my problem! It seems like I had some old Angular files in the root of my home directory causing all Angular projects in there with later Angular-cli versions to fail. So by deleting all files and folders that doesn't belong to the home directory, it solves the problems and the errors disappears.
@dlimkin solution works. Removing all the ng files from the home directory solved it. Thanks.
For me, this issue is weirdly specific to a new build - only in my live production environment (Heroku / Ubuntu). Everything gets built fresh from the package.json on deploy (no old files), so no possibilities of similar ng
gremlins for me in that regard.
Can anyone with a similar live production env also confirm that this is an issue?
@dustintheweb I'm getting it too and only when building in Docker
anyone using Docker, I recommend using this Docker image to get started https://hub.docker.com/r/teracy/angular-cli/tags/
or you can use this seed project https://github.com/teracyhq/angular-boilerplate that I'm working on
I do not have any issues so far with these 2 projects.
@hoatle Thanks for the tip! Unfortunately my project's openshift s2i environment doesn't allow me to use docker images (even though OC itself supports it), we're currently using: https://hub.docker.com/r/ryanj/centos7-s2i-nodejs/ which is itself pretty out of date, sigh. :(
OSX 10.12.3
NPM 4.2.0
[ISSUE]
Encounter the same issue when I updated angular-cli and ran $ng new appname. App wouldn't build.
[RESOLVED]
npm uninstall angular-cli -g
npm uninstall angular-cli --save
/usr/local/lib/node_modules
/Users/username/node_modules
/Users/username/
npm install angular-cli -g
ng -v
output angular-cli: 1.0.0-beta.28.3
node: 7.3.0
os: darwin x64
ng new project
I think my main issue was having a package.json in my /Users/username/
To add to what others have mentioned, on Ubuntu if you have an angular-cli.json
file in your home directory, it seems to get read (and maybe merged) whenever running ng
commands in any folder. If you have a project directly in your home directory the json
file seems to get read twice, which screws up parsing if you specify styles
property.
Simplest way to see this behavior is to create an empty angular-cli.json
in your home directoy, and then run the angular-cli
tests, many of which will fail:
touch ~/angular-cli.json
git clone https://github.com/angular/angular-cli.git
cd angular-cli
npm install && npm test
@filipesilva is this expected behaviour?
UPDATE
In the config design doc I see that it was proposed to use $HOME/.angular-cli.json
as a fallback global config, but in implementation $HOME/angular-cli.json
(no dot prefix) is used as a fallback and there is no check in case the fallback path == the project path.
This is a serious limitation for anyone who wants to deploy with heroku/dokku/etc. where the app is always installed directly to the $HOME directory.
Ways I think this could be resolved:
Thanks for all the work investigating this issue. @mikejpeters I can confirm this isn't intended and is in fact a bug.
@mikejpeters Which version of CLI are you using? The fallback mechanism has already been changed and fixed https://github.com/angular/angular-cli/blob/master/packages/@angular/cli/models/config.ts#L105 I tried to replicate the issue and seems to be working fine.
Apart from the case where you create empty angular-cli.json
or .angular-cli.json
file which shouldn't be the case and it doesn't seem to be failing at reading but at parsing JSON file.
I am testing it on @angular/cli: local (v1.0.0-rc.2, branch: angular-master)
.
I haven't tested with the latest version, but from reading the source code I don't see any reason the issue would be fixed.
The issue is that the global config is merged with the project config _even if they are the exact same path (i.e. project folder = home folder)_.
i just run today to this issue with latest cli and angular-cli.json file in the home. It looks like issue is still there.
I am having this problem when launching it from within Bluemix shell environment only but not in my docker environment:
vcap@af80c6a0-788b-44c6-586d-5423ba47ebde:~$ ng build
Cannot read property 'config' of null
TypeError: Cannot read property 'config' of null
at Class.run (/home/vcap/app/node_modules/@angular/cli/tasks/build.js:16:56)
at Class.run (/home/vcap/app/node_modules/@angular/cli/commands/build.js:143:26)
at Class.<anonymous> (/home/vcap/app/node_modules/@angular/cli/ember-cli/lib/models/command.js:134:17)
at process._tickCallback (internal/process/next_tick.js:109:7)
In my Bluemix web shell environment settings are:
vcap@af80c6a0-788b-44c6-586d-5423ba47ebde:~$ ng --version
_ _ ____ _ ___
/ \ _ __ __ _ _ _| | __ _ _ __ / ___| | |_ _|
/ △ \ | '_ \ / _` | | | | |/ _` | '__| | | | | | |
/ ___ \| | | | (_| | |_| | | (_| | | | |___| |___ | |
/_/ \_\_| |_|\__, |\__,_|_|\__,_|_| \____|_____|___|
|___/
@angular/cli: 1.0.0-rc.2
node: 7.9.0
os: linux x64
@angular/cli: 1.0.0-rc.2
@angular/common: 4.0.3
@angular/compiler: 4.0.3
@angular/core: 4.0.3
@angular/forms: 4.0.3
@angular/http: 4.0.3
@angular/platform-browser: 4.0.3
@angular/platform-browser-dynamic: 4.0.3
@angular/router: 4.0.3
@angular/compiler-cli: 4.0.3
vcap@af80c6a0-788b-44c6-586d-5423ba47ebde:~$ node --version
v7.9.0
vcap@af80c6a0-788b-44c6-586d-5423ba47ebde:~$
And in my local machine docker settins are:
┌─[127|]─[master]─<default2:~/src/mean-app>
└node_modules/\@angular/cli/bin/ng --version
_ _ ____ _ ___
/ \ _ __ __ _ _ _| | __ _ _ __ / ___| | |_ _|
/ △ \ | '_ \ / _` | | | | |/ _` | '__| | | | | | |
/ ___ \| | | | (_| | |_| | | (_| | | | |___| |___ | |
/_/ \_\_| |_|\__, |\__,_|_|\__,_|_| \____|_____|___|
|___/
@angular/cli: 1.0.0-rc.2
node: 7.9.0
os: linux x64
@angular/cli: 1.0.0-rc.2
@angular/common: 4.0.3
@angular/compiler: 4.0.3
@angular/core: 4.0.3
@angular/forms: 4.0.3
@angular/http: 4.0.3
@angular/platform-browser: 4.0.3
@angular/platform-browser-dynamic: 4.0.3
@angular/router: 4.0.3
@angular/compiler-cli: 4.0.3
┌─[0|]─[master]─<default2:~/src/mean-app>
└node --version
v7.9.0
┌─[0|]─[master]─<default2:~/src/mean-app>
└
@sumitarora can you have another look at this? There's a couple more reports that seem to indicate some problem with the config merging logic:
HOME
var: https://github.com/angular/angular-cli/issues/5808#issuecomment-298309209Hi, I am changing the schema.js file manually and it works fine. But
I want to implement : this._children[name_1] = this._createChildProperty(name_1, value ? value[name_1] : null, forward && forward.children ? forward.children[name_1] : null, propertySchema);
in my node modules automatically using ng build through gradle. I am download node v6.9.2 and running npm install and build using gradle task. I get the same error.
Please suggest. Is it a version issue or something else?
Still running into this (on dokku) with the latest version of the cli.
The issue still exists on latest @angular/cli
Works on my windows machine but throws this error:
TypeError: Cannot read property 'glob' of null
on centos in aws.
All was good until today morning when the error just popped up while running:
ng build && node server.js
on CentOS.
Is there a fix?
Thank you SO much @dlimkin
Such a stp issue!
The same issue for me with dokku today.
Updated @angular/cli to 1.6.1 with no help.
Could we expect a fix?
The non-working repo, if needed, is https://github.com/ysilvestrov/ontap-tv
@ysilvestrov redefine HOME to any other directory before building, for example i have this in my package.json
"heroku-postbuild": "HOME=/tmp/build ng build --prod --aot --no-progress"
The bug appears when $HOME contains a .angular-cli.json and since dokku puts the project in $HOME then the bug triggers
Closing as version 1.0.0-beta.26
is a prerelease version and no longer supported. If the problem persists within the latest stable version (currently 6.2.3), please open a new issue detailing the problem.
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._
Most helpful comment
To add to what others have mentioned, on Ubuntu if you have an
angular-cli.json
file in your home directory, it seems to get read (and maybe merged) whenever runningng
commands in any folder. If you have a project directly in your home directory thejson
file seems to get read twice, which screws up parsing if you specifystyles
property.Simplest way to see this behavior is to create an empty
angular-cli.json
in your home directoy, and then run theangular-cli
tests, many of which will fail:@filipesilva is this expected behaviour?
UPDATE
In the config design doc I see that it was proposed to use
$HOME/.angular-cli.json
as a fallback global config, but in implementation$HOME/angular-cli.json
(no dot prefix) is used as a fallback and there is no check in case the fallback path == the project path.This is a serious limitation for anyone who wants to deploy with heroku/dokku/etc. where the app is always installed directly to the $HOME directory.
Ways I think this could be resolved: