oclif / config

base config object and standard interfaces for oclif components
MIT License
25 stars 36 forks source link

Getting "Cannot find module 'ts-node'" when running with DEBUG=* #89

Open arodik opened 4 years ago

arodik commented 4 years ago

ts-node is in devDependencies of @oclif/config however if I run CLI with DEBUG=* I see the following:

@oclif/config Error: Cannot find module 'ts-node'
  @oclif/config Require stack:
  @oclif/config - /Users/arodik/projects/ffbt/node_modules/@oclif/config/lib/ts-node.js
  @oclif/config - /Users/arodik/projects/ffbt/node_modules/@oclif/config/lib/plugin.js
  @oclif/config - /Users/arodik/projects/ffbt/node_modules/@oclif/config/lib/config.js
  @oclif/config - /Users/arodik/projects/ffbt/node_modules/@oclif/config/lib/index.js
  @oclif/config - /Users/arodik/projects/ffbt/node_modules/@oclif/command/lib/command.js
  @oclif/config - /Users/arodik/projects/ffbt/node_modules/@oclif/command/lib/index.js
  @oclif/config - /Users/arodik/projects/ffbt/dist/cli/entrypoint.js
  @oclif/config     at Function.Module._resolveFilename (internal/modules/cjs/loader.js:794:15)
  @oclif/config     at Function.resolve (internal/modules/cjs/helpers.js:80:19)
  @oclif/config     at registerTSNode (/Users/arodik/projects/ffbt/node_modules/@oclif/config/lib/ts-node.js:19:32)
  @oclif/config     at Object.tsPath (/Users/arodik/projects/ffbt/node_modules/@oclif/config/lib/ts-node.js:77:9)
  @oclif/config     at Plugin.get commandsDir [as commandsDir] (/Users/arodik/projects/ffbt/node_modules/@oclif/config/lib/plugin.js:68:42)
  @oclif/config     at Plugin.get commandIDs [as commandIDs] (/Users/arodik/projects/ffbt/node_modules/@oclif/config/lib/plugin.js:70:19)
  @oclif/config     at Plugin._manifest (/Users/arodik/projects/ffbt/node_modules/@oclif/config/lib/plugin.js:161:28)
  @oclif/config     at async Plugin.load (/Users/arodik/projects/ffbt/node_modules/@oclif/config/lib/plugin.js:56:25)
  @oclif/config     at async Config.load (/Users/arodik/projects/ffbt/node_modules/@oclif/config/lib/config.js:28:9)
  @oclif/config     at async Object.load (/Users/arodik/projects/ffbt/node_modules/@oclif/config/lib/config.js:334:5) +1ms

We don't use ts-node because we don't need it Our package.json

RasPhilCo commented 4 years ago

Did you use the oclif generator to create a plain JS cli?

arodik commented 4 years ago

No, I didn't I can try if it may help

RasPhilCo commented 4 years ago

I was trying to understand how you created your cli so I can try and reproduce.

arodik commented 4 years ago

I had a lot of files in the project when I decided to use OClif, so I've created the project into the separate directory via npx oclif multi mynewcli Generator settings:

? Select a package manager npm
? TypeScript Yes
? Use tslint (linter for TypeScript) No
? Use mocha (testing framework) No

Then copied files to my project

arodik commented 4 years ago

I've figured out how to reproduce the issue

 @oclif/config reading core plugin /Users/arodik/projects/mynewcli +0ms
  @oclif/config loadJSON /Users/arodik/projects/mynewcli/package.json +0ms
  @oclif/config loadJSON /Users/arodik/projects/mynewcli/oclif.manifest.json +2ms
  @oclif/config loadJSON /Users/arodik/projects/mynewcli/.oclif.manifest.json +0ms
  @oclif/config registering ts-node at /Users/arodik/projects/mynewcli +0ms
  @oclif/config Error: Cannot find module 'ts-node'
  @oclif/config Require stack:
  @oclif/config - /Users/arodik/projects/mynewcli/node_modules/@oclif/config/lib/ts-node.js
  @oclif/config - /Users/arodik/projects/mynewcli/node_modules/@oclif/config/lib/plugin.js
  @oclif/config - /Users/arodik/projects/mynewcli/node_modules/@oclif/config/lib/config.js
  @oclif/config - /Users/arodik/projects/mynewcli/node_modules/@oclif/config/lib/index.js
  @oclif/config - /Users/arodik/projects/mynewcli/node_modules/@oclif/command/lib/command.js
  @oclif/config - /Users/arodik/projects/mynewcli/node_modules/@oclif/command/lib/index.js
  @oclif/config - /Users/arodik/projects/mynewcli/bin/run
  @oclif/config     at Function.Module._resolveFilename (internal/modules/cjs/loader.js:772:15)
  @oclif/config     at Function.resolve (internal/modules/cjs/helpers.js:74:19)
  @oclif/config     at registerTSNode (/Users/arodik/projects/mynewcli/node_modules/@oclif/config/lib/ts-node.js:19:32)
  @oclif/config     at Object.tsPath (/Users/arodik/projects/mynewcli/node_modules/@oclif/config/lib/ts-node.js:77:9)
  @oclif/config     at Plugin.get commandsDir [as commandsDir] (/Users/arodik/projects/mynewcli/node_modules/@oclif/config/lib/plugin.js:68:42)
  @oclif/config     at Plugin.get commandIDs [as commandIDs] (/Users/arodik/projects/mynewcli/node_modules/@oclif/config/lib/plugin.js:70:19)
  @oclif/config     at Plugin._manifest (/Users/arodik/projects/mynewcli/node_modules/@oclif/config/lib/plugin.js:161:28)
  @oclif/config     at async Plugin.load (/Users/arodik/projects/mynewcli/node_modules/@oclif/config/lib/plugin.js:56:25)
  @oclif/config     at async Config.load (/Users/arodik/projects/mynewcli/node_modules/@oclif/config/lib/config.js:28:9)

tsconfig is located at the root of the project because the project is written on Typescript, but I didn't install ts-node because I don't need it. I compile all into the dist directory and start OClif as a usual nodejs app

RasPhilCo commented 4 years ago

Ah, gotcha. We assume if there is a tsconfig.json file in root you are running a typescript project.

arodik commented 4 years ago

I think it's OK to skip ts-node if the script can't find it in dependencies :) I can try to make a PR with a fix