I am new to Node.js and this is my first project in node. Now I have two main files.
For local envoirnment I have index.js file and for production envoirnment production.js. Now I want that when I run command npm start then automaticall file loaded according to envoirnment.
I done following changes in package.json
"main": "process.env.APP_ENV==undeinfed ? index.js : server.js",
"scripts": {
"start": "process.env.APP_ENV==undeinfed ? index.js : server.js",
"test": "echo \"Error: no test specified\" && exit 1"
}
When I npm start command then I received following error
quick-create-post#1.0.0 start /home/php/fayvo/lambda/quick-create-post
process.env.APP_ENV==undeinfed ? index.js : server.js
sh: 1: process.env.APP_ENV==undeinfed: not found npm ERR! code
ELIFECYCLE npm ERR! syscall spawn npm ERR! file sh npm ERR! errno
ENOENT npm ERR! quick-create-post#1.0.0 start:
process.env.APP_ENV==undeinfed ? index.js : server.js npm ERR! spawn
ENOENT npm ERR! npm ERR! Failed at the quick-create-post#1.0.0 start
script. npm ERR! This is probably not a problem with npm. There is
likely additional logging output above.
npm ERR! A complete log of this run can be found in: npm ERR!
/home/.npm/_logs/2019-12-18T10_11_35_259Z-debug.log
Suggest implementing a one index.js file that does all required branching inside explicitly without hidden logic inside package.json file. It will give much more readable and flexible approach.
Related
I have written a command line utility in JS which can be used to backup data to IPFS.
https://www.npmjs.com/package/ipfs-backup
When I am attempting to install it with npm install -g ipfs-backup I am getting an error which prevents the package from being installed.
The terminal is outputting the following:
npm ERR! code ENOENT
npm ERR! syscall chmod
npm ERR! path C:\Users\jwhit\AppData\Roaming\npm\node_modules\ipfs-backup\node index.js
npm ERR! errno -4058
npm ERR! enoent ENOENT: no such file or directory, chmod 'C:\Users\jwhit\AppData\Roaming\npm\node_modules\ipfs-backup\node index.js'
npm ERR! enoent This is related to npm not being able to find a file.
The issue turned out to be that within my package.json file I had
"bin": {
"ipfs-backup": "node index.js",
"ipfs-restore": "node restore.js"
}
instead of
"bin": {
"ipfs-backup": "./index.js",
"ipfs-restore": "./restore.js"
}
It installs and functions correctly now.
I want to add a script dev in my package.json.
I tried adding it manually in a text editor, but when I run:
npm run dev
I get some errors. Is it possible to add the script from the terminal?
Edit:
I added:
"scripts:" {
"start": "node app",
"dev": "nodemon app"
}
and I got this error:
nodemon app sh: nodemon: command not found
npm ERR! code ELIFECYCLE npm ERR! syscall spawn
npm ERR! file sh npm ERR! errno ENOENT
npm ERR! code#1.0.0 dev: nodemon app npm ERR! spawn ENOENT
npm ERR! npm ERR! Failed at the code#1.0.0 dev script.
The problem here is you have not installed the package named nodemon:
In your CLI enter the following command to install the package:
npm install nodemon --save-dev
Then run the following command and it will work:
npm run dev
I'm trying to creaet a global node CLI app, but It depends on Babel to run.
I've added this to my package.json
"bin": {
"kurly": "dist/index.js"
},
"scripts": {
"prepare": "npm run build",
"build": "babel src -d dist",
"start": "yarn build && node dist/index.js"
},
and I'm installing it from my git using
npm install -g alexanderprod/kurly
But when installing it I get the following error
npm ERR! path /usr/local/lib/node_modules/kurly/dist/index.js
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall chmod
npm ERR! enoent ENOENT: no such file or directory, chmod '/usr/local/lib/node_modules/kurly/dist/index.js'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent
So it seems like npm didn't build it with babel before applying chmod.
And now I'm wonderging how to fix that, since I assume it makes no sense to upload dist/ to npm/git
Source of problem (I think):
"scripts": {
"dev-server": "./node_modules/webpack-dev-server/bin/webpack-dev-server.js --config config/webpack.config.js"
},
Error log:
> somename#1.0.0 dev-server C:\Users\Admin\Downloads\somename
> ./node_modules/webpack-dev-server/bin/webpack-dev-server.js --config config/we
bpack.config.js
'.' is not recognized as an internal or external command,
operable program or batch file.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! somename#1.0.0 dev-server: `./node_modules/webpack-dev-server/bin/webpa
ck-dev-server.js --config config/webpack.config.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the somename#1.0.0 dev-server script.
npm ERR! This is probably not a problem with npm. There is likely additional log
ging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\Admin\AppData\Roaming\npm-cache\_logs\2018-01-29T13_52_01_
170Z-debug.log
I am receiving this error and because of that I'm not able to: npm run dev-server.
Is there a way to replace ./ part?
Just refer to the binary directly:
"scripts": {
"dev-server": "webpack-dev-server --config config/webpack.config.js"
},
npm will run the script in an environment where all the installed packages' binaries (namely node_modules/.bin/) are directly available in PATH, including webpack-dev-server.
Also using / as a path separator is preferable in package.json - it works on Windows as well as Linux or OSX.
I have a node js app deployed at elasticbeanstalk. Installed and symlinked node, npm and webpack. But when running npm run build-prod which itself calls the script webpack --config /var/app/current/webpack.prod.config.js. Getting the following error with exit status -2. The same happens if I run the webpack command directly too. I'm looking out for solutions.
[2016-07-26T06:57:36.301Z] INFO [9731] - [Application update app-5c81-160726_122417#24/AppDeployStage0/EbExtensionPostBuild/Infra-EmbeddedPostBuild/postbuild_0_site_web/Command 06_npm_run_build_prod] : Activity execution failed, because:
> site-web#1.0.0 build-prod /tmp/deployment/application
> webpack --config /var/app/current/webpack.prod.config.js
npm ERR! Linux 4.4.14-24.50.amzn1.x86_64
npm ERR! argv "/opt/elasticbeanstalk/node-install/node-v4.4.6-linux-x64/bin/node" "/bin/npm" "run" "build-prod"
npm ERR! node v4.4.6
npm ERR! npm v2.15.5
npm ERR! file sh
npm ERR! path sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn sh
npm ERR! site-web#1.0.0 build-prod: `webpack --config /var/app/current/webpack.prod.config.js`
npm ERR! spawn sh ENOENT
npm ERR!
npm ERR! Failed at the site-web#1.0.0 build-prod script 'webpack --config /var/app/current/webpack.prod.config.js'.
npm ERR! This is most likely a problem with the site-web package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! webpack --config /var/app/current/webpack.prod.config.js
npm ERR! You can get information on how to open an issue for this project with:
npm ERR! npm bugs site-web
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!
npm ERR! npm owner ls site-web
npm ERR! There is likely additional logging output above.
npm ERR! Linux 4.4.14-24.50.amzn1.x86_64
npm ERR! argv "/opt/elasticbeanstalk/node-install/node-v4.4.6-linux-x64/bin/node" "/bin/npm" "run" "build-prod"
npm ERR! node v4.4.6
npm ERR! npm v2.15.5
npm ERR! code ELIFECYCLE
container config file:
container_commands:
01_node_symlink:
command: "ln -sf `ls -td /opt/elasticbeanstalk/node-install/node-* | head -1`/bin/node /bin/node"
02_npm_symlink:
command: "ln -sf `ls -td /opt/elasticbeanstalk/node-install/node-* | head -1`/bin/npm /bin/npm"
03_npm_install_global_packages:
command: "npm install webpack webpack-cli -g"
04_webpack_symlink:
command: "ln -sf `ls -td /opt/elasticbeanstalk/node-install/node-* | head -1`/bin/webpack /bin/webpack"
#05_webpack_run_build_prod:
#command: "webpack --config /var/app/current/webpack.prod.config.js --progress --colors"
06_npm_run_build_prod:
command: "npm run build-prod"
Scripts in package.json
"scripts": {
"build": "webpack --config webpack.local.config.js --progress --colors",
"build-local": "webpack --config webpack.prod.config.js --progress --colors",
"build-prod": "webpack --config /var/app/current/webpack.prod.config.js",
"server": "node app.js",
"dev-server": "node dev-app.js"
}
And when I uncomment 05 that is run the webpack command directly it ends with error Error: "/var/app/current/site-web/static/assets/app/index.js" is not in the SourceMap.
The build script is successful at local but blocked on all the ways at production. Couldn't figure out how to run webpack command to build the JS on AWS beanstalk environment. Isn't the ideal way of building the JS file?
node: 4.4.6
npm: 2.15.5
webpack: latest
I'm still new to elastic beanstalk and having similar issues myself but I noticed your tasks for symlinking node, npm, etc, are in the form of container_commands.
According to the official docs, "They run after the application and web server have been set up and the application version file has been extracted, but before the application version is deployed."
Maybe try using commands: instead of container_commands:. See link I shared.
Maybe the fact that these commands aren't running until after the application and web server have already been set up is why it may not be working for you?
Again, I'm still new to elastic beanstalk but maybe that can help.
I think the approach is faulty. Webpack and Webpack-cli are devDependencies of package.json.
You should set your env variable to NPM_USE_PRODUCTION=false in order for EB to install devDependencies as well.
see more here: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/nodejs-platform-packagejson.html
I had issues with global npm installs (in my case react-scripts). What I did as a workaround was to install the dependent package as declared in package.json and then symlink to it (located at /tmp/deployment/application/node_modules/.bin on EC2) in the .ebextensions config file:
03_react_scripts_symlink:
command: "ln -sf /tmp/deployment/application/node_modules/.bin/react-scripts /bin/react-scripts"
04_npm_run_build_prod:
command: "sudo npm run build"
Finally, I managed to run the build script at the staging dir. It's not a permanent solution but it works.
05_webpack_run_build_prod:
command: "cd /tmp/deployment/application && sudo webpack --config webpack.prod.config.js --progress --colors"