Ride-The-Lightning / RTL

Ride The Lightning - A full function web browser app for LND, C-Lightning and Eclair
MIT License
740 stars 159 forks source link

Can't start v0.15.2 #1430

Open Bobz-zg opened 3 months ago

Bobz-zg commented 3 months ago

Can't start, npm install --omit=dev --legacy-peer-deps was success with few warnings but did complete. How do I debug this?

$ npm install --omit=dev --legacy-peer-deps
$ node rtl
node:internal/modules/esm/resolve:214
const resolvedOption = FSLegacyMainResolve(packageJsonUrlString, packageConfig.main, baseStringified);
                         ^

Error: Cannot find package '.rtl/node_modules/request-promise/package.json' imported from .rtl/backend/utils/common.js
    at legacyMainResolve (node:internal/modules/esm/resolve:214:26)
    at packageResolve (node:internal/modules/esm/resolve:840:14)
    at moduleResolve (node:internal/modules/esm/resolve:910:20)
    at defaultResolve (node:internal/modules/esm/resolve:1130:11)
    at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:396:12)
    at ModuleLoader.resolve (node:internal/modules/esm/loader:365:25)
    at ModuleLoader.getModuleJob (node:internal/modules/esm/loader:240:38)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:85:39)
    at link (node:internal/modules/esm/module_job:84:36) {
  code: 'ERR_MODULE_NOT_FOUND'
}

Config File:

{
    "multiPass": "1234",
    "port": "3123",
    "dbDirectoryPath": "/home/username/.rtl",
    "SSO": {
        "rtlSSO": 0,
        "rtlCookiePath": "",
        "logoutRedirectLink": ""
    },
    "nodes": [
        {
            "index": 1,
            "lnNode": "usernameLND",
            "lnImplementation": "LND",
            "authentication": {
                "macaroonPath": "/home/username/.lnd/data/chain/bitcoin/mainnet",
                "configPath": "/home/username/.lnd/lnd.conf"
            },
            "settings": {
                "userPersona": "MERCHANT",
                "logLevel": "DEBUG",
                "fiatConversion": false,
                "unannouncedChannels": false
            }
        }
    ]
}
Bobz-zg commented 3 months ago

if I run only npm install I get this:

npm install
npm error code ERESOLVE
npm error ERESOLVE could not resolve
npm error
npm error While resolving: @angular-devkit/build-angular@18.0.5
npm error Found: protractor@3.3.0
npm error node_modules/protractor
npm error   dev protractor@"^3.3.0" from the root project
npm error
npm error Could not resolve dependency:
npm error peerOptional protractor@"^7.0.0" from @angular-devkit/build-angular@18.0.5
npm error node_modules/@angular-devkit/build-angular
npm error   dev @angular-devkit/build-angular@"^18.0.2" from the root project
npm error
npm error Conflicting peer dependency: protractor@7.0.0
npm error node_modules/protractor
npm error   peerOptional protractor@"^7.0.0" from @angular-devkit/build-angular@18.0.5
npm error   node_modules/@angular-devkit/build-angular
npm error     dev @angular-devkit/build-angular@"^18.0.2" from the root project
npm error
npm error Fix the upstream dependency conflict, or retry
npm error this command with --force or --legacy-peer-deps
npm error to accept an incorrect (and potentially broken) dependency resolution.
npm error
npm error
npm error For a full report see:
npm error /home/user/.npm/_logs/2024-07-21T11_41_29_557Z-eresolve-report.txt
npm error A complete log of this run can be found in: /home/user/.npm/_logs/2024-07-21T11_41_29_557Z-debug-0.log
ShahanaFarooqui commented 2 months ago

I did not encounter this error before. Can you delete node_modules folder from the root and run npm install --omit=dev --legacy-peer-deps again.

Bobz-zg commented 2 months ago

Thanks for checking. Didn't help sadly, I tried several times. I tried to manually install npm install request-promise but that throws an error. I can install with --legacy-peer-deps but then again same error. Below is the full output.

I have just tried now on my osx local machine, I get same error locally. But note that I don't run LND locally.

Local OSX:

Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'request-promise' imported from /Users/www/rtl/backend/utils/common.js

Server Ubuntu 22

user@server:~/.rtl$ ls
angular.json  backend  docker  Dockerfile  eslint.config.js  frontend  LICENSE  package.json  package-lock.json  RTL-Config.json  rtl.js  server  src  tsconfig.json
user@server:~/.rtl$ rm -rf node_modules
user@server:~/.rtl$ ls
angular.json  backend  docker  Dockerfile  eslint.config.js  frontend  LICENSE  package.json  package-lock.json  RTL-Config.json  rtl.js  server  src  tsconfig.json
user@server:~/.rtl$ npm install --omit=dev --legacy-peer-dep
npm warn deprecated request-promise@0.0.1: request-promise has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142
npm warn deprecated csurf@1.11.0: Please use another csrf package
npm warn deprecated har-validator@5.1.5: this library is no longer supported
npm warn deprecated uuid@3.4.0: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm warn deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142

added 327 packages, and audited 328 packages in 2s

25 packages are looking for funding
  run `npm fund` for details

2 moderate severity vulnerabilities

Some issues need review, and may require choosing
a different dependency.

Run `npm audit` for details.
user@server:~/.rtl$ node rtl
node:internal/modules/esm/resolve:214
  const resolvedOption = FSLegacyMainResolve(packageJsonUrlString, packageConfig.main, baseStringified);
                         ^

Error: Cannot find package '/home/user/.rtl/node_modules/request-promise/package.json' imported from /home/user/.rtl/backend/utils/common.js
    at legacyMainResolve (node:internal/modules/esm/resolve:214:26)
    at packageResolve (node:internal/modules/esm/resolve:840:14)
    at moduleResolve (node:internal/modules/esm/resolve:910:20)
    at defaultResolve (node:internal/modules/esm/resolve:1130:11)
    at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:396:12)
    at ModuleLoader.resolve (node:internal/modules/esm/loader:365:25)
    at ModuleLoader.getModuleJob (node:internal/modules/esm/loader:240:38)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:85:39)
    at link (node:internal/modules/esm/module_job:84:36) {
  code: 'ERR_MODULE_NOT_FOUND'
}

Node.js v20.11.1
user@server:~/.rtl$

npm install request-promise

npm error code ERESOLVE
npm error ERESOLVE could not resolve
npm error
npm error While resolving: @angular-devkit/build-angular@18.0.5
npm error Found: protractor@3.3.0
npm error node_modules/protractor
npm error   dev protractor@"^3.3.0" from the root project
npm error
npm error Could not resolve dependency:
npm error peerOptional protractor@"^7.0.0" from @angular-devkit/build-angular@18.0.5
npm error node_modules/@angular-devkit/build-angular
npm error   dev @angular-devkit/build-angular@"^18.0.2" from the root project
npm error
npm error Conflicting peer dependency: protractor@7.0.0
npm error node_modules/protractor
npm error   peerOptional protractor@"^7.0.0" from @angular-devkit/build-angular@18.0.5
npm error   node_modules/@angular-devkit/build-angular
npm error     dev @angular-devkit/build-angular@"^18.0.2" from the root project
npm error
npm error Fix the upstream dependency conflict, or retry
npm error this command with --force or --legacy-peer-deps
npm error to accept an incorrect (and potentially broken) dependency resolution.
npm error
npm error
npm error For a full report see:
npm error /home/user/.npm/_logs/2024-07-23T16_24_25_929Z-eresolve-report.txt
npm error A complete log of this run can be found in: /home/user/.npm/_logs/2024-07-23T16_24_25_929Z-debug-0.log
user@server:~/.rtl$ npm install request-promise --legacy-peer-deps
npm warn deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
npm warn deprecated rimraf@2.7.1: Rimraf versions prior to v4 are no longer supported
npm warn deprecated rimraf@3.0.2: Rimraf versions prior to v4 are no longer supported
npm warn deprecated cryptiles@2.0.5: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).
npm warn deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported
npm warn deprecated glob@6.0.4: Glob versions prior to v9 are no longer supported
npm warn deprecated q@1.4.1: You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.
npm warn deprecated
npm warn deprecated (For a CapTP with native promises, see @endo/eventual-send and @endo/captp)
npm warn deprecated boom@2.10.1: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).
npm warn deprecated minimatch@0.3.0: Please update to minimatch 3.0.2 or higher to avoid a RegExp DoS issue
npm warn deprecated sntp@1.0.9: This module moved to @hapi/sntp. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.
npm warn deprecated uuid@3.4.0: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm warn deprecated tough-cookie@2.2.2: ReDoS vulnerability parsing Set-Cookie https://nodesecurity.io/advisories/130
npm warn deprecated node-uuid@1.4.8: Use uuid module instead
npm warn deprecated har-validator@2.0.6: this library is no longer supported
npm warn deprecated hoek@2.16.3: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).
npm warn deprecated glob@3.2.11: Glob versions prior to v9 are no longer supported
npm warn deprecated request@2.67.0: request has been deprecated, see https://github.com/request/request/issues/3142
npm warn deprecated hawk@3.1.3: This module moved to @hapi/hawk. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.
npm warn deprecated protractor@3.3.0: We have news to share - Protractor is deprecated and will reach end-of-life by Summer 2023. To learn more and find out about other options please refer to this post on the Angular blog. Thank you for using and contributing to Protractor. https://goo.gle/state-of-e2e-in-angular
npm warn deprecated @angular/flex-layout@15.0.0-beta.42: This package has been deprecated. Please see https://blog.angular.io/modern-css-in-angular-layouts-4a259dca9127

added 1131 packages, changed 1 package, and audited 1459 packages in 7s

174 packages are looking for funding
  run `npm fund` for details

26 vulnerabilities (3 low, 9 moderate, 12 high, 2 critical)

To address issues that do not require attention, run:
  npm audit fix

To address all issues (including breaking changes), run:
  npm audit fix --force

Run `npm audit` for details.
# Run
user@server:~/.rtl$ node rtl

node:internal/modules/esm/resolve:214
  const resolvedOption = FSLegacyMainResolve(packageJsonUrlString, packageConfig.main, baseStringified);
                         ^

Error: Cannot find package '/home/user/.rtl/node_modules/request-promise/package.json' imported from /home/user/.rtl/backend/utils/common.js
    at legacyMainResolve (node:internal/modules/esm/resolve:214:26)
    at packageResolve (node:internal/modules/esm/resolve:840:14)
    at moduleResolve (node:internal/modules/esm/resolve:910:20)
    at defaultResolve (node:internal/modules/esm/resolve:1130:11)
    at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:396:12)
    at ModuleLoader.resolve (node:internal/modules/esm/loader:365:25)
    at ModuleLoader.getModuleJob (node:internal/modules/esm/loader:240:38)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:85:39)
    at link (node:internal/modules/esm/module_job:84:36) {
  code: 'ERR_MODULE_NOT_FOUND'
}

Node.js v20.11.1
user@server:~/.rtl$
ShahanaFarooqui commented 2 months ago

I tried to reproduce the issue locally but it is working fine on multiple nodejs versions. RTL is successfully running on nodejs v18.17.0, 20.11.1 and 20.13.1. Below are the commands I tried after deleting node_modules folder from RTL root:

Option 1:

nvm install v20.11.1
nvm use 20.11.1
npm install --omit=dev --legacy-peer-deps

Option 2:

npx -p node@20.11.1 -c "npm install --omit=dev --legacy-peer-deps"

I am running npm v10.2.4 and node rtl worked as expected on all three versions.

ShahanaFarooqui commented 2 months ago

Can you try clearing your cache first?

npm cache clean --force
rm -rf node_modules package-lock.json
npm install --legacy-peer-deps
Bobz-zg commented 2 months ago

This did work on OSX, but Ubuntu server 22.04 is not working. I've tried with latest node v22.5.1, but ended up with the same problem

$ node rtl
node:internal/modules/esm/resolve:214
  const resolvedOption = FSLegacyMainResolve(packageJsonUrlString, packageConfig.main, baseStringified);
                         ^

Error: Cannot find package '/home/user/.rtl/node_modules/request-promise/package.json' imported from /home/user/.rtl/backend/utils/common.js
    at legacyMainResolve (node:internal/modules/esm/resolve:214:26)
    at packageResolve (node:internal/modules/esm/resolve:840:14)
    at moduleResolve (node:internal/modules/esm/resolve:910:20)
    at defaultResolve (node:internal/modules/esm/resolve:1130:11)
    at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:396:12)
    at ModuleLoader.resolve (node:internal/modules/esm/loader:365:25)
    at ModuleLoader.getModuleJob (node:internal/modules/esm/loader:240:38)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:85:39)
    at link (node:internal/modules/esm/module_job:84:36) {
  code: 'ERR_MODULE_NOT_FOUND'
}

Node.js v20.11.1 

I can see the package is there and permissions are ok

user@server:~/.rtl/node_modules$ ls -al | grep req

drwxrwxr-x   2 user user   4096 Jul 24 09:00 create-require
drwxrwxr-x   4 user user   4096 Jul 24 09:00 request
drwxrwxr-x   3 user user   4096 Jul 24 09:00 request-promise
drwxrwxr-x   2 user user   4096 Jul 24 09:00 require-directory
drwxrwxr-x   2 user user   4096 Jul 24 09:00 require-from-string
drwxrwxr-x   2 user user   4096 Jul 24 09:00 require-main-filename
drwxrwxr-x   2 user user   4096 Jul 24 09:00 requires-port
drwxrwxr-x   5 user user   4096 Jul 24 09:00 xmlhttprequest-ssl

Response on OSX, I don't run bitcoin on my laptop, it's an expected expected error not to find macaroon file.


me@osx ~/www/rtl >> master ± > node rtl
[7/24/2024, 8:53:08 AM] ERROR: Config => Something went wrong while creating backup file:
Error: ENOENT: no such file or directory, open '/Users/me/Library/Application Support/Lnd/data/chain/bitcoin/mainnet/admin.macaroon'.

[7/24/2024, 8:53:08 AM] INFO: RTL => Server is up and running, please open the UI at http://localhost:3000 or your proxy configured url.```
Bobz-zg commented 2 months ago

Some googling around returned this:

https://stackoverflow.com/questions/68545357/error-cannot-find-module-request-promise

The package you are trying to install has been deprecated. request-promise has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142

Turns out to be correct, the package itself has also reached EOL: https://github.com/request/request-promise Further to that, could be that node-fetch is a good replacement: https://github.com/node-fetch/node-fetch

But can't say it would work. My guess is that some config on Ubuntu server is preventing file from being loaded hence the error.

ShahanaFarooqui commented 2 months ago

Response on OSX, I don't run bitcoin on my laptop, it's an expected expected error not to find macaroon file.

This error is not related to Bitcoin but LND. In order to run RTL with LND, you have to save the admin.macaroon locally. Then provide the path of the macaroon.

But can't say it would work.

node-fetch needs to be updated in RTL project for it to work first. Just installing it locally will not be helpful.

npm install request-promise --legacy-peer-deps can be another solution but that is also not resolving it for you.

You can also try running:

npm cache clean --force
rm -rf node_modules package-lock.json
npm install --force

But by now, I am unable to see any other reason for it to fail.

Bobz-zg commented 2 months ago

Thanks for checking. My guess is that some security config on Ubuntu server is preventing node package request-promise from being loaded hence the error. As of Feb 11th 2020, request is fully deprecated.

davacode commented 3 weeks ago

I also came across this issue. I found this helped me resolve this error

npm install request-promise --save npm cache clean --force npm install