chibisafe / chibisafe

Blazing fast file vault written in TypeScript! 🚀
https://chibisafe.app
MIT License
1.64k stars 266 forks source link

[BUG] Compilation error #221

Closed Undecised closed 3 years ago

Undecised commented 3 years ago

Describe the bug Whenever i try installing the dependencies i get a lot of errors:

TOUCH Release/obj.target/libvips-cpp.stamp
  CXX(target) Release/obj.target/sharp/src/common.o
En el fichero incluido desde ../src/common.cc:27:
../src/common.h:78:20: error: ‘Handle’ is not a member of ‘v8’; did you mean ‘JobHandle’?
   78 |   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
      |                    ^~~~~~
      |                    JobHandle
../src/common.h:78:37: error: expected primary-expression before ‘>’ token
   78 |   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
      |                                     ^
../src/common.h:78:39: error: ‘obj’ no se declaró en este ámbito
   78 |   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
      |                                       ^~~
../src/common.h:78:56: error: expected primary-expression before ‘attr’
   78 |   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
      |                                                        ^~~~
../src/common.h:78:60: error: se trata la lista de expresiones como una expresión compuesta en en inicializador [-fpermissive]
   78 |   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr);
      |                                                            ^
../src/common.h:79:29: error: ‘Handle’ is not a member of ‘v8’; did you mean ‘JobHandle’?
   79 |   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr);
      |                             ^~~~~~
      |                             JobHandle
../src/common.h:79:46: error: expected primary-expression before ‘>’ token
   79 |   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr);
      |                                              ^
../src/common.h:79:48: error: ‘obj’ no se declaró en este ámbito
   79 |   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr);
      |                                                ^~~
../src/common.h:79:65: error: expected primary-expression before ‘attr’
   79 |   std::string AttrAsStr(v8::Handle<v8::Object> obj, std::string attr);
      |                                                                 ^~~~
../src/common.h:80:38: error: ‘Handle’ is not a member of ‘v8’; did you mean ‘JobHandle’?
   80 |   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr);
      |                                      ^~~~~~
      |                                      JobHandle
../src/common.h:80:55: error: expected primary-expression before ‘>’ token
   80 |   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr);
      |                                                       ^
../src/common.h:80:57: error: ‘obj’ no se declaró en este ámbito
   80 |   std::vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr);
      |                                                         ^~~
../src/common.h:80:74: error: expected primary-expression before ‘attr’
   80 | vector<double> AttrAsRgba(v8::Handle<v8::Object> obj, std::string attr);
      |                                                                   ^~~~

../src/common.h:81:48: error: ‘Handle’ is not a member of ‘v8’; did you mean ‘JobHandle’?
   81 |   template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
      |                                                ^~~~~~
      |                                                JobHandle
../src/common.h:81:65: error: expected primary-expression before ‘>’ token
   81 | emplate<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
      |                                                              ^

../src/common.h:81:67: error: ‘obj’ no se declaró en este ámbito
   81 | plate<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’
   81 | e T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
      |                                                                  ^~~~

../src/common.h:81:37: aviso: variable templates only available with ‘-std=c++14’ or ‘-std=gnu++14’
   81 |   template<typename T> v8::Local<T> AttrAs(v8::Handle<v8::Object> obj, std::string attr) {
      |                                     ^~~~~~
../src/common.h:81:89: error: expected ‘;’ before ‘{’ token
   81 | e 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’; did you mean ‘JobHandle’?
   84 |   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
      |                                     ^~~~~~
      |                                     JobHandle
../src/common.h:84:54: error: expected primary-expression before ‘>’ token
   84 |   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
      |                                                      ^
../src/common.h:84:56: error: ‘obj’ no se declaró en este ámbito
   84 |   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
      |                                                        ^~~
../src/common.h:84:73: error: expected primary-expression before ‘attr’
   84 | ate<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
      |                                                                  ^~~~

../src/common.h:84:26: aviso: variable templates only available with ‘-std=c++14’ or ‘-std=gnu++14’
   84 |   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
      |                          ^~~~~~
../src/common.h:84:78: error: expected ‘;’ before ‘{’ token
   84 | ate<typename T> T AttrTo(v8::Handle<v8::Object> obj, std::string attr) {
      |                                                                       ^~
      |                                                                       ;
../src/common.h:87:26: error: redefinición de ‘template<class T> T sharp::AttrTo’
   87 |   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, int attr) {
      |                          ^~~~~~
../src/common.h:84:26: nota: ‘template<class T> T sharp::AttrTo<T>’ previously declared here
   84 |   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’; did you mean ‘JobHandle’?
   87 |   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, int attr) {
      |                                     ^~~~~~
      |                                     JobHandle
../src/common.h:87:54: error: expected primary-expression before ‘>’ token
   87 |   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, int attr) {
      |                                                      ^
../src/common.h:87:56: error: ‘obj’ no se declaró en este ámbito
   87 |   template<typename T> T AttrTo(v8::Handle<v8::Object> obj, int attr) {
      |                                                        ^~~
../src/common.h:87:61: error: expected primary-expression before ‘int’
   87 |   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’; did you mean ‘JobHandle’?
   93 |     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
      |         ^~~~~~
      |         JobHandle
../src/common.h:93:26: error: expected primary-expression before ‘>’ token
   93 |     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
      |                          ^
../src/common.h:93:28: error: ‘input’ no se declaró en este ámbito
   93 |     v8::Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
      |                            ^~~~~
../src/common.h:93:70: error: expected primary-expression before ‘&’ token
   93 | Handle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
      |                                                              ^

../src/common.h:93:71: error: ‘buffersToPersist’ no se declaró en este ámbito
   93 | andle<v8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
      |                                                              ^~~~~~~~~~~~~~~~

../src/common.h:93:87: error: se trata la lista de expresiones como una expresión compuesta en en inicializador [-fpermissive]
   93 | 8::Object> input, std::vector<v8::Local<v8::Object>> &buffersToPersist);
      |                                                                       ^

../src/common.cc:34:8: error: redefinición de ‘bool sharp::HasAttr’
   34 |   bool HasAttr(v8::Handle<v8::Object> obj, std::string attr) {
      |        ^~~~~~~
En el fichero incluido desde ../src/

And so it continues a lot of lines. To Reproduce Steps to reproduce the behavior:

  1. git clone the github
  2. cd lolisafe
  3. npm i
  4. See error

Expected behavior I expect it to compile but meh Screenshots If applicable, add screenshots to help explain your problem.

Additional context I tried deploying on hekoru and repl.it too. Last one is on my personal machine.

Pitu commented 3 years ago

Which Node version are you using?

TheLastZombie commented 3 years ago

Seems like this happens with Node >= 12.

Tested with:

Possibly related: https://github.com/lovell/sharp/issues/2182#issuecomment-618823533

Pitu commented 3 years ago

As a temporary fix might be worth trying to change the Sharp version in the package.json and run npm i again to see if it works. Otherwise downgrading the version of Node might be the way to go

Undecised commented 3 years ago

Alright so i was using

Seems like this happens with Node >= 12.

Tested with:

  • 10.22.1, works
  • 11.15.0, works
  • 12.18.4, throws
  • 13.14.0, throws
  • 14.11.0, throws

Possibly related: lovell/sharp#2182 (comment)

My bad, i was using node 14.10, that might've been the problem.

Undecised commented 3 years ago

I tested on node 14.11.0 and im still getting the error.

Undecised commented 3 years ago

I'll try downgrading to node 10

Undecised commented 3 years ago

Fixed. Node10 is the solution.

TheLastZombie commented 3 years ago

I wouldn't call it a solution, just a workaround.