Skip to content
This repository has been archived by the owner on May 22, 2023. It is now read-only.

Build is failing after Meteor 1.6 release #27

Open
neoromantic opened this issue Oct 30, 2017 · 8 comments
Open

Build is failing after Meteor 1.6 release #27

neoromantic opened this issue Oct 30, 2017 · 8 comments

Comments

@neoromantic
Copy link

So, I was using minimeteor with gitlab CI and it was great.

Today exactly when meteor 1.6 has been release, my build broke.

Here's my .gitlab-ci.yml (relevant part):

buid_docker:
  stage: docker
  image: gitlab/dind:latest
  script:
  - cd app
  - docker info
  - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.gitlab.com
  - curl https://aedm.github.io/minimeteor/build.sh | sh -s $CONTAINER_IMAGE
  - docker push $CONTAINER_IMAGE

So, it just curls minimeteor's build.sh and runs it in my app's folder.

Here's what I get in build log:

$ curl https://aedm.github.io/minimeteor/build.sh | sh -s $CONTAINER_IMAGE
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100  4312  100  4312    0     0  10759      0 --:--:-- --:--:-- --:--:-- 10780
Using temp dir: /tmp/minimeteor-2xcEz33U
[minimeteor] Building as root
[minimeteor] Copying project files to temp directory
[minimeteor] Writing Meteor build script
[minimeteor] Setting executable rights on build script
[minimeteor] Starting Meteor container
Unable to find image 'debian:latest' locally
latest: Pulling from library/debian
3e17c6eae66c: Pulling fs layer
3e17c6eae66c: Download complete
3e17c6eae66c: Pull complete
Digest: sha256:2e43e863a4ab6e53caf87a37d01d8c144cdcb732ad1b944fcf45cbfd7248a02a
Status: Downloaded newer image for debian:latest
[minimeteor] Meteor container started
[minimeteor] Updating apt
[minimeteor] Installing tools
debconf: delaying package configuration, since apt-utils is not installed
[minimeteor] Copying files
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100  7782    0  7782    0     0  10921      0 --:--:-- --:--:-- --:--:-- 10929
Downloading Meteor distribution

Meteor 1.6 has been installed in your home directory (~/.meteor).
Writing a launcher script to /usr/local/bin/meteor for your convenience.

To get started fast:

  $ meteor create ~/my_cool_app
  $ cd ~/my_cool_app
  $ meteor

Or see the docs at:

  docs.meteor.com

[minimeteor] Installing NPM build dependencies
user, this is your first time using Meteor!
Installing a Meteor distribution in your home directory.
Downloading Meteor distribution
[minimeteor] Performing Meteor build
Error checking npm module: node-sass@>=3.x <=4.x (required by nathantreid:css-modules): module not found. Please ensure you have installed the module; here is the command:
 meteor npm install node-sass --save-dev

Warning: unable to resolve "env" in presets of /home/user/source/.babelrc
Warning: unable to resolve "react" in presets of /home/user/source/.babelrc
Warning: unable to resolve "stage-2" in presets of /home/user/source/.babelrc
Warning: unable to resolve "babel-root-slash-import" in plugins of /home/user/source/.babelrc
Warning: unable to resolve "transform-decorators-legacy" in plugins of /home/user/source/.babelrc
Warning: unable to resolve "transform-class-properties" in plugins of /home/user/source/.babelrc
Error checking npm module: node-sass@>=3.x <=4.x (required by nathantreid:css-modules): module not found. Please ensure you have installed the module; here is the command:
 meteor npm install node-sass --save-dev ....

And so on. So, it fails to install npm module idk why. Obviously, it is listed in package.json.

Same is happening when I try to build it on my local machine (mac OS).

I'd love to get help on this :(

@neoromantic
Copy link
Author

So, i looked at npm install log in minimeteor container and here's what it says:

root@7a3d6826e51e:/# cat /home/user/.npm/_logs/2017-10-30T20_51_06_137Z-debug.log
0 info it worked if it ends with ok
1 verbose cli [ '/home/user/.meteor/packages/meteor-tool/.1.6.0.1whvdik.oongk++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/bin/node',
1 verbose cli   '/home/user/.meteor/packages/meteor-tool/.1.6.0.1whvdik.oongk++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/bin/npm',
1 verbose cli   'install' ]
2 info using npm@5.4.2
3 info using node@v8.8.1
4 verbose npm-session 34b6d7f140263173
5 silly install runPreinstallTopLevelLifecycles
6 silly preinstall giveback.app@0.1.0
7 info lifecycle giveback.app@0.1.0~preinstall: giveback.app@0.1.0
8 silly install loadCurrentTree
9 silly install readLocalPackageData
10 silly install loadIdealTree
11 silly install cloneCurrentTreeToIdealTree
12 silly install loadShrinkwrap
13 verbose stack SyntaxError: Unexpected token < in JSON at position 5052
13 verbose stack     at JSON.parse (<anonymous>)
13 verbose stack     at module.exports (/home/user/.meteor/packages/meteor-tool/.1.6.0.1whvdik.oongk++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/npm/lib/utils/parse-json.js:3:15)
13 verbose stack     at BB.join (/home/user/.meteor/packages/meteor-tool/.1.6.0.1whvdik.oongk++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/npm/lib/install/read-shrinkwrap.js:31:20)
13 verbose stack     at tryCatcher (/home/user/.meteor/packages/meteor-tool/.1.6.0.1whvdik.oongk++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/npm/node_modules/bluebird/js/release/util.js:16:23)
13 verbose stack     at Holder$3._callFunction (eval at generateHolderClass (/home/user/.meteor/packages/meteor-tool/.1.6.0.1whvdik.oongk++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/npm/node_modules/bluebird/js/release/join.js:92:16), <anonymous>:14:44)
13 verbose stack     at Holder$3.checkFulfillment (eval at generateHolderClass (/home/user/.meteor/packages/meteor-tool/.1.6.0.1whvdik.oongk++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/npm/node_modules/bluebird/js/release/join.js:92:16), <anonymous>:29:30)
13 verbose stack     at Promise.eval (eval at thenCallback (/home/user/.meteor/packages/meteor-tool/.1.6.0.1whvdik.oongk++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/npm/node_modules/bluebird/js/release/join.js:14:16), <anonymous>:6:20)
13 verbose stack     at Promise._settlePromise (/home/user/.meteor/packages/meteor-tool/.1.6.0.1whvdik.oongk++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/npm/node_modules/bluebird/js/release/promise.js:566:21)
13 verbose stack     at Promise._settlePromise0 (/home/user/.meteor/packages/meteor-tool/.1.6.0.1whvdik.oongk++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/npm/node_modules/bluebird/js/release/promise.js:614:10)
13 verbose stack     at Promise._settlePromises (/home/user/.meteor/packages/meteor-tool/.1.6.0.1whvdik.oongk++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/npm/node_modules/bluebird/js/release/promise.js:693:18)
13 verbose stack     at Promise._fulfill (/home/user/.meteor/packages/meteor-tool/.1.6.0.1whvdik.oongk++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/npm/node_modules/bluebird/js/release/promise.js:638:18)
13 verbose stack     at Promise._settlePromise (/home/user/.meteor/packages/meteor-tool/.1.6.0.1whvdik.oongk++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/npm/node_modules/bluebird/js/release/promise.js:582:21)
13 verbose stack     at Promise._settlePromise0 (/home/user/.meteor/packages/meteor-tool/.1.6.0.1whvdik.oongk++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/npm/node_modules/bluebird/js/release/promise.js:614:10)
13 verbose stack     at Promise._settlePromises (/home/user/.meteor/packages/meteor-tool/.1.6.0.1whvdik.oongk++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/npm/node_modules/bluebird/js/release/promise.js:693:18)
13 verbose stack     at Promise._fulfill (/home/user/.meteor/packages/meteor-tool/.1.6.0.1whvdik.oongk++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/npm/node_modules/bluebird/js/release/promise.js:638:18)
13 verbose stack     at /home/user/.meteor/packages/meteor-tool/.1.6.0.1whvdik.oongk++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/npm/node_modules/bluebird/js/release/nodeback.js:42:21
13 verbose stack     at /home/user/.meteor/packages/meteor-tool/.1.6.0.1whvdik.oongk++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:78:16
13 verbose stack     at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:513:3)
14 verbose cwd /home/user/source
15 verbose Linux 4.9.49-moby
16 verbose argv "/home/user/.meteor/packages/meteor-tool/.1.6.0.1whvdik.oongk++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/bin/node" "/home/user/.meteor/packages/meteor-tool/.1.6.0.1whvdik.oongk++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle/bin/npm" "install"
17 verbose node v8.8.1
18 verbose npm  v5.4.2
19 error Unexpected token < in JSON at position 5052
20 verbose exit [ 1, true ]

@neoromantic
Copy link
Author

Found it. It was corrupted package-lock.json.

@aedm
Copy link
Owner

aedm commented Oct 31, 2017

I'm glad you figured out how to run it on Gitlab. I tried for a while and encountered an error that I couldn't fix. Eventually, I left Gitlab CI altogether. Maybe I'll give it another shot.

@neoromantic neoromantic reopened this Nov 1, 2017
@neoromantic
Copy link
Author

Still can't get it to work due to node version upgrade. So, I've trying to deploy my current app, that's on Meteor 1.5 and i get this:

Errors prevented bundling:
While processing files with nathantreid:css-modules (for target web.browser):
/home/user/source/node_modules/node-sass/lib/binding.js:15:13: Missing binding
/home/user/source/node_modules/node-sass/vendor/linux-x64-46/binding.node
Node Sass could not find a binding for your current environment: Linux 64-bit
with Node.js 4.x

Found bindings for the following environments:
- Linux 64-bit with Node.js 8.x

This usually happens because your environment has changed since running `npm
install`.
Run `npm rebuild node-sass --force` to build the binding for your current
environment.
at module.exports
(/home/user/source/node_modules/node-sass/lib/binding.js:15:13)
at Object.<anonymous>
(/home/user/source/node_modules/node-sass/lib/index.js:14:35)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Module.Mp.load (/tools/tool-env/install-runtime.js:30:27)
at Function.Module._load (module.js:300:12)
at Module.require (module.js:353:17)
at require (internal/module.js:12:17)
at Object.require (/tools/isobuild/bundler.js:1915:22)
at makeInstallerOptions.fallback (packages/modules-runtime.js:641:18)
at require (packages/modules-runtime.js:234:16)
at new ScssProcessor (packages/mss/scss-processor.js:12:55)
at CssModulesBuildPlugin._setupPreprocessors
(packages/mss/css-modules-build-plugin.js:125:31)
at CssModulesBuildPlugin.processFilesForTarget
(packages/mss/css-modules-build-plugin.js:74:10)

I'm using css-modules with node-sass. Any Idea?

@neoromantic
Copy link
Author

If I understand things right, then it seems that when build.sh runs 'meteor npm install' on line 75, it uses latest meteor node version, which is 8.

Then, when build.sh runs 'meteor build', it correctly adjusts to node v.4 because my project is still on meteor 1.5.

So, question is how to make meteor npm install to use node version 4, just like when building. I actually don't know how to make it happen and why is npm install creates bindings for node8 instead of node4.

Same happens on my machine, so Gitlab CI is not relevant.

@neoromantic
Copy link
Author

So I logged into meteor build container and check how is it going, and here's what I see:

root@96cbb3d0cfd0:/home/source# curl "https://install.meteor.com/" | sh
root@96cbb3d0cfd0:/home/source# meteor npm -v
5.4.2
root@96cbb3d0cfd0:/home/source# meteor node -v
v8.8.1
root@96cbb3d0cfd0:/home/source# cat .meteor/release
METEOR@1.5.2.2

So, I don't know yet why, but meteor uses new node version instead of node4, which should be selected for meteor 1.5 application. Any ideas?

@neoromantic
Copy link
Author

So, what I did, is added empty meteor command with release tag, just before doing npm install:

meteor --release 1.5.2.2 list
meteor npm install

in build script. And it worked. So, it seems that bug is in Meteor 1.6, that fails to choose proper meteor-tool version when installing npm packages on clean install.

I would appreciate if anyone could check my deductions and confirm or add to it.

@csillag
Copy link
Contributor

csillag commented Jun 5, 2018

Meteor 1.7 and 1.7.0.1 is impacted by a recent NPM bug - see meteor/meteor#9940

I could successfully perform a build using the same workaround. (Adding meteor --release 1.6.1 list before meteor npm install.)

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants