Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error while creating the app on Heroku #12

Open
XuNiLuS opened this issue Jun 7, 2019 · 5 comments
Open

Error while creating the app on Heroku #12

XuNiLuS opened this issue Jun 7, 2019 · 5 comments

Comments

@XuNiLuS
Copy link

XuNiLuS commented Jun 7, 2019

I have a problem when creating the application on heroku since link in the file README.md
The deployment on is in error.

Here are the logs he returns

-----> Node.js app detected
       
-----> Creating runtime environment
       
       NPM_CONFIG_LOGLEVEL=error
       NODE_ENV=production
       NODE_MODULES_CACHE=true
       NODE_VERBOSE=false
       
-----> Installing binaries
       engines.node (package.json):  >=10.15
       engines.npm (package.json):   unspecified (use default)
       engines.yarn (package.json):  unspecified (use default)
       
       Resolving node version >=10.15...
       Downloading and installing node 12.4.0...
       Using default npm version: 6.9.0
       Resolving yarn version 1.x...
       Downloading and installing yarn (1.16.0)...
       Installed yarn 1.16.0
       
-----> Installing dependencies
       Installing node modules (yarn.lock)
       yarn install v1.16.0
       [1/4] Resolving packages...
       [2/4] Fetching packages...
       info fsevents@1.2.4: The platform "linux" is incompatible with this module.
       info "fsevents@1.2.4" is an optional dependency and failed compatibility check. Excluding it from installation.
       [3/4] Linking dependencies...
       [4/4] Building fresh packages...
       error /tmp/build_bf5bc5a9d821bf8c0f1833a5087216f7/node_modules/sharp: Command failed.
       Exit code: 1
       Command: (node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)
       Arguments: 
       Directory: /tmp/build_bf5bc5a9d821bf8c0f1833a5087216f7/node_modules/sharp
       Output:
       info sharp Downloading https://github.com/lovell/sharp-libvips/releases/download/v8.7.0/libvips-8.7.0-linux-x64.tar.gz
       make: Entering directory '/tmp/build_bf5bc5a9d821bf8c0f1833a5087216f7/node_modules/sharp/build'
         TOUCH Release/obj.target/libvips-cpp.stamp
         CXX(target) Release/obj.target/sharp/src/common.o
       In file included from ../../nan/nan_new.h:189:0,
                        from ../../nan/nan.h:223,
                        from ../src/common.cc:24:
       ../../nan/nan_implementation_12_inl.h: In static member function ‘static Nan::imp::FactoryBase<v8::StringObject>::return_t Nan::imp::Factory<v8::StringObject>::New(v8::Local<v8::String>)’:
       ../../nan/nan_implementation_12_inl.h:356:37: error: no matching function for call to ‘v8::StringObject::New(v8::Local<v8::String>&)’
          return v8::StringObject::New(value).As<v8::StringObject>();
                                            ^
       In file included from /app/.node-gyp/12.4.0/include/node/node.h:63:0,
                        from ../src/common.cc:22:
       /app/.node-gyp/12.4.0/include/node/v8.h:5380:23: note: candidate: static v8::Local<v8::Value> v8::StringObject::New(v8::Isolate*, v8::Local<v8::String>)
          static Local<Value> New(Isolate* isolate, Local<String> value);
                              ^~~
       /app/.node-gyp/12.4.0/include/node/v8.h:5380:23: note:   candidate expects 2 arguments, 1 provided
       In file included from ../../nan/nan_new.h:189:0,
                        from ../../nan/nan.h:223,
                        from ../src/common.cc:24:
       ../../nan/nan_implementation_12_inl.h:356:58: error: expected primary-expression before ‘>’ token
          return v8::StringObject::New(value).As<v8::StringObject>();
                                                                 ^
       ../../nan/nan_implementation_12_inl.h:356:60: error: expected primary-expression before ‘)’ token
          return v8::StringObject::New(value).As<v8::StringObject>();
                                                                   ^
       In file included from /usr/include/c++/7/cassert:44:0,
                        from /app/.node-gyp/12.4.0/include/node/node_object_wrap.h:26,
                        from ../../nan/nan.h:55,
                        from ../src/common.cc:24:
       ../../nan/nan_object_wrap.h: In destructor ‘virtual Nan::ObjectWrap::~ObjectWrap()’:
       ../../nan/nan_object_wrap.h:24:25: error: ‘class Nan::Persistent<v8::Object>’ has no member named ‘IsNearDeath’
            assert(persistent().IsNearDeath());
                                ^
       ../../nan/nan_object_wrap.h: In static member function ‘static void Nan::ObjectWrap::WeakCallback(const v8::WeakCallbackInfo<Nan::ObjectWrap>&)’:
       ../../nan/nan_object_wrap.h:127:26: error: ‘class Nan::Persistent<v8::Object>’ has no member named ‘IsNearDeath’
            assert(wrap->handle_.IsNearDeath());
                                 ^
       In file included from ../src/common.cc:27:0:
       ../src/common.h: At global scope:
       ../src/common.h:78:20: error: ‘Handle’ is not a member of ‘v8’
          bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
                           ^~~~~~
       ../src/common.h:78:37: error: expected primary-expression before ‘>’ token
          bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
                                            ^
       ../src/common.h:78:39: error: ‘obj’ was not declared in this scope
          bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
                                              ^~~
       ../src/common.h:78:56: error: expected primary-expression before ‘attr’
          bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
                                                               ^~~~
       ../src/common.h:78:60: error: expression list treated as compound expression in initializer [-fpermissive]
          bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
                                                                   ^
       ../src/common.h:79:29: error: ‘Handle’ is not a member of ‘v8’
          std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr);
                                    ^~~~~~
       ../src/common.h:79:46: error: expected primary-expression before ‘>’ token
          std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr);
                                                     ^
       ../src/common.h:79:48: error: ‘obj’ was not declared in this scope
          std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr);
                                                       ^~~
       ../src/common.h:79:65: error: expected primary-expression before ‘attr’
          std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr);
                                                                        ^~~~
       ../src/common.h:80:38: error: ‘Handle’ is not a member of ‘v8’
          std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr);
                                             ^~~~~~
       ../src/common.h:80:55: error: expected primary-expression before ‘>’ token
          std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr);
                                                              ^
       ../src/common.h:80:57: error: ‘obj’ was not declared in this scope
          std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr);
                                                                ^~~
       ../src/common.h:80:74: error: expected primary-expression before ‘attr’
          std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr);
                                                                                 ^~~~
       ../src/common.h:81:48: error: ‘Handle’ is not a member of ‘v8’
          template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
                                                       ^~~~~~
       ../src/common.h:81:65: error: expected primary-expression before ‘>’ token
          template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
                                                                        ^
       ../src/common.h:81:67: error: ‘obj’ was not declared in this scope
          template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
                                                                          ^~~
       ../src/common.h:81:84: error: expected primary-expression before ‘attr’
          template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
                                                                                           ^~~~
       ../src/common.h:81:37: warning: variable templates only available with -std=c++14 or -std=gnu++14
          template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
                                            ^~~~~~
       ../src/common.h:81:90: error: expected ‘;’ before ‘{’ token
          template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
                                                                                                 ^
       ../src/common.h:84:37: error: ‘Handle’ is not a member of ‘v8’
          template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
                                            ^~~~~~
       ../src/common.h:84:54: error: expected primary-expression before ‘>’ token
          template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
                                                             ^
       ../src/common.h:84:56: error: ‘obj’ was not declared in this scope
          template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
                                                               ^~~
       ../src/common.h:84:73: error: expected primary-expression before ‘attr’
          template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
                                                                                ^~~~
       ../src/common.h:84:26: warning: variable templates only available with -std=c++14 or -std=gnu++14
          template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
                                 ^~~~~~
       ../src/common.h:84:79: error: expected ‘;’ before ‘{’ token
          template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
                                                                                      ^
       ../src/common.h:87:37: error: ‘Handle’ is not a member of ‘v8’
          template<typename T> T AttrTo(v8::Handle<v8::Object> obj, int attr) {
                                            ^~~~~~
       ../src/common.h:87:54: error: expected primary-expression before ‘>’ token
          template<typename T> T AttrTo(v8::Handle<v8::Object> obj, int attr) {
                                                             ^
       ../src/common.h:87:56: error: ‘obj’ was not declared in this scope
          template<typename T> T AttrTo(v8::Handle<v8::Object> obj, int attr) {
                                                               ^~~
       ../src/common.h:87:61: error: expected primary-expression before ‘int’
          template<typename T> T AttrTo(v8::Handle<v8::Object> obj, int attr) {
                                                                    ^~~
       ../src/common.h:84:26: warning: variable templates only available with -std=c++14 or -std=gnu++14
          template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
                                 ^~~~~~
       ../src/common.h:87:71: error: expected ‘;’ before ‘{’ token
          template<typename T> T AttrTo(v8::Handle<v8::Object> obj, int attr) {
                                                                              ^
       ../src/common.h:93:9: error: ‘Handle’ is not a member of ‘v8’
            v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
                ^~~~~~
       ../src/common.h:93:26: error: expected primary-expression before ‘>’ token
            v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
                                 ^
       ../src/common.h:93:28: error: ‘input’ was not declared in this scope
            v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
                                   ^~~~~
       ../src/common.h:93:28: note: suggested alternative: ‘ino_t’
            v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
                                   ^~~~~
                                   ino_t
       ../src/common.h:93:70: error: expected primary-expression before ‘&’ token
            v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
                                                                             ^
       ../src/common.h:93:71: error: ‘buffersToPersist’ was not declared in this scope
            v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
                                                                              ^~~~~~~~~~~~~~~~
       ../src/common.h:93:87: error: expression list treated as compound expression in initializer [-fpermissive]
            v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
                                                                                              ^
       ../src/common.cc:34:20: error: redefinition of ‘bool sharp::HasAttr’
          bool HasAttr(v8::Handle<v8::Object> obj, std::string attr) {
                           ^~~~~~
       In file included from ../src/common.cc:27:0:
       ../src/common.h:78:8: note: ‘bool sharp::HasAttr’ previously defined here
          bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
               ^~~~~~~
       ../src/common.cc:34:20: error: ‘Handle’ is not a member of ‘v8’
          bool HasAttr(v8::Handle<v8::Object> obj, std::string attr) {
                           ^~~~~~
       ../src/common.cc:34:37: error: expected primary-expression before ‘>’ token
          bool HasAttr(v8::Handle<v8::Object> obj, std::string attr) {
                                            ^
       ../src/common.cc:34:39: error: ‘obj’ was not declared in this scope
          bool HasAttr(v8::Handle<v8::Object> obj, std::string attr) {
                                              ^~~
       ../src/common.cc:34:56: error: expected primary-expression before ‘attr’
          bool HasAttr(v8::Handle<v8::Object> obj, std::string attr) {
                                                               ^~~~
       ../src/common.cc:37:29: error: redefinition of ‘std::string sharp::AttrAsStr’
          std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr) {
                                    ^~~~~~
       In file included from ../src/common.cc:27:0:
       ../src/common.h:79:15: note: ‘std::string sharp::AttrAsStr’ previously declared here
          std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr);
                      ^~~~~~~~~
       ../src/common.cc:37:29: error: ‘Handle’ is not a member of ‘v8’
          std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr) {
                                    ^~~~~~
       ../src/common.cc:37:46: error: expected primary-expression before ‘>’ token
          std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr) {
                                                     ^
       ../src/common.cc:37:48: error: ‘obj’ was not declared in this scope
          std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr) {
                                                       ^~~
       ../src/common.cc:37:65: error: expected primary-expression before ‘attr’
          std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr) {
                                                                        ^~~~
       ../src/common.cc:40:38: error: redefinition of ‘std::vector<double> sharp::AttrAsRgba’
          std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr) {
                                             ^~~~~~
       In file included from ../src/common.cc:27:0:
       ../src/common.h:80:23: note: ‘std::vector<double> sharp::AttrAsRgba’ previously declared here
          std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr);
                              ^~~~~~~~~~
       ../src/common.cc:40:38: error: ‘Handle’ is not a member of ‘v8’
          std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr) {
                                             ^~~~~~
       ../src/common.cc:40:55: error: expected primary-expression before ‘>’ token
          std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr) {
                                                              ^
       ../src/common.cc:40:57: error: ‘obj’ was not declared in this scope
          std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr) {
                                                                ^~~
       ../src/common.cc:40:74: error: expected primary-expression before ‘attr’
          std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr) {
                                                                                 ^~~~
       ../src/common.cc:51:9: error: redefinition of ‘sharp::InputDescriptor* sharp::CreateInputDescriptor’
            v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist
                ^~~~~~
       In file included from ../src/common.cc:27:0:
       ../src/common.h:92:20: note: ‘sharp::InputDescriptor* sharp::CreateInputDescriptor’ previously defined here
          InputDescriptor* CreateInputDescriptor(
                           ^~~~~~~~~~~~~~~~~~~~~
       ../src/common.cc:51:9: error: ‘Handle’ is not a member of ‘v8’
            v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist
                ^~~~~~
       ../src/common.cc:51:26: error: expected primary-expression before ‘>’ token
            v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist
                                 ^
       ../src/common.cc:51:28: error: ‘input’ was not declared in this scope
            v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist
                                   ^~~~~
       ../src/common.cc:51:28: note: suggested alternative: ‘ino_t’
            v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist
                                   ^~~~~
                                   ino_t
       ../src/common.cc:51:70: error: expected primary-expression before ‘&’ token
            v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist
                                                                             ^
       ../src/common.cc:51:71: error: ‘buffersToPersist’ was not declared in this scope
            v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist
                                                                              ^~~~~~~~~~~~~~~~
       cc1plus: warning: unrecognized command line option ‘-Wno-cast-function-type’
       sharp.target.mk:134: recipe for target 'Release/obj.target/sharp/src/common.o' failed
       make: *** [Release/obj.target/sharp/src/common.o] Error 1
       make: Leaving directory '/tmp/build_bf5bc5a9d821bf8c0f1833a5087216f7/node_modules/sharp/build'
       gyp ERR! build error 
       gyp ERR! stack Error: `make` failed with exit code: 2
       gyp ERR! stack     at ChildProcess.onExit (/tmp/build_bf5bc5a9d821bf8c0f1833a5087216f7/.heroku/node/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:262:23)
       gyp ERR! stack     at ChildProcess.emit (events.js:200:13)
       gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:272:12)
       gyp ERR! System Linux 4.4.0-1044-aws
       gyp ERR! command "/tmp/build_bf5bc5a9d821bf8c0f1833a5087216f7/.heroku/node/bin/node" "/tmp/build_bf5bc5a9d821bf8c0f1833a5087216f7/.heroku/node/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
       gyp ERR! cwd /tmp/build_bf5bc5a9d821bf8c0f1833a5087216f7/node_modules/sharp
       gyp ERR! node -v v12.4.0
       gyp ERR! node-gyp -v v3.8.0
       gyp ERR! not ok
       info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
-----> Build failed
       
       We're sorry this build is failing! You can troubleshoot common issues here:
       https://devcenter.heroku.com/articles/troubleshooting-node-deploys
       
       Some possible problems:
       
       - Dangerous semver range (>) in engines.node
         https://devcenter.heroku.com/articles/nodejs-support#specifying-a-node-js-version
       
       Love,
       Heroku
       
 !     Push rejected, failed to compile Node.js app.
 !     Push failed

problem side of Heroku ?

@FabienVandeschrick
Copy link

Hello,
I encounter the same problem.
Did you manage to resolve the issue?
Thanks in advance.

@otanim
Copy link

otanim commented Nov 17, 2019

The solution:
Add the following parameters in package.json file:

"engines": {
    "node": "10.17.0"
  },
"engineStrict" : true,

The root cause:
Basically Heroku is trying to use Node.js v12 (latest version at this point), which is conflicting with the npm package Sharp project. So you have to manually set the exact Node.js version which Heroku needs to install (v10).

@elan
Copy link
Member

elan commented Nov 18, 2019

Probably something like this is more flexible for local installs?

"engines": {
      "node": "10.x.x"
    },
  "engineStrict" : true,

@otanim
Copy link

otanim commented Nov 18, 2019

@elan, sounds better solution, here is much-simplified version:

"engines": {
    "node": "^10"
  },
"engineStrict" : true,

it would match only 10th version.

@elan
Copy link
Member

elan commented Nov 18, 2019

Thanks a bunch, fixed in 24625be.

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

No branches or pull requests

4 participants