Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

198
Views
NPM npm_package_main variable is always empty

Problem

NPM $npm_package_main variable is always empty.

  1. When I set the package.json file with "main": "index.js"
  2. Set the "start" property from scripts to "start": "node $npm_package_main"
  3. Then run npm start

Problem: the CLI executes the Node REPL mode, ignoring the "main" variable from package.json.

Expected behavior: execute the command as node index.js.

Environment

  • Linux Ubuntu 20.04.1
  • npm -v = 7.3.0
  • node -v = v15.5.0
  • npm run env | grep npm_package_name = npm_package_name=app
  • npm run env | grep npm_package_main = EMPTY

How to reproduce

  • Create an "app" directory and enter the new directory
  • Create an "index.js" file with the following content console.log('HELLO');
  • Run npm init and hit ENTER for all questions
  • Edit the package.json file and add the following line to the "scripts" property: "start": "node $npm_package_main",
  • now your package.json must look like this
    {
      "name": "app",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "devDependencies": {},
      "scripts": {
        "start": "node $npm_package_main",
        "test": "echo \"Error: no test specified\" && exit 1"
      },
      "author": "",
      "license": "ISC"
    }
  • Run "npm start"
  • File "index.js" is not executed and Node enters the REPL mode.

Attempts

Set "start" and running "npm start" for:

  • "echo $npm_package_main" prints nothing
  • "echo $npm_package_name" prints "app"
  • "echo $npm_package_version" prints "1.0.0"

References

  • NPM package.json variables: https://docs.npmjs.com/cli/v7/using-npm/scripts
  • NPM Github issue: https://github.com/npm/cli/issues/2585
over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

  • The official answer from NPM: use "node .". There's no official reason for this behavior, until this post.

  • According to the documentation, the "main" property contains the entrypoint for your app when is used as a module in other projects: https://docs.npmjs.com/cli/v7/configuring-npm/package-json#main

Solution

  • Use the "config" property instead:
{
  "name": "app",
  "version": "1.0.0",
  "description": "",
  "devDependencies": {},
  "config": {
    "main": "index.js"
  },    
  "scripts": {
    "start": "node $npm_package_config_main",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}
  • Run "npm start"
  • It works

References:

  • https://github.com/npm/cli/issues/2585
  • https://github.com/npm/cli/pull/2446
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!