I am working on a project for an embedded Linux system (busybox made with buildroot). I am wondering if it is possible to use node.js modules socket.io and express without having to install or run npm. The goal is to be able to have buildroot configured to create a busybox image that simply includes node.js, and then place all my javascript files in the proper directory and execute node app.js from the command line to run the node application (which will use socket.io and express).
So, for example on my development machine (That does have node.js and npm installed), I could run npm install socket.io so it would get socket.io and all its dependencies and install it in the node_modules directory of my project. If I place all those files in a directory and move them to the production environment (embedded Linux with just node.js installed and where npm install socket.io was never run) would my application work?
If I place all those files in a directory and move them to the production environment would my application work?
Yes, it would. However, if you do have any binary dependencies, they need to be recompiled, so it's a bit trickier. If you don't, you'll be fine.
Related
I want to test my react/ node.js web app with a production build. I already run npm run build at the app directory and created build folder.
I was unable to run the application using localhost:8080 (server port).
Are there any ways to double check if the application is actually running in that port or access production-ready application?
PS. I used serve to host the application but it posts error 404: The requested path could not be found
Thank you for your help.
Every SPA application has its own package.json file. Inside you have to see the script section:
Normally after you run nm run build you have a compiled version of your code.
At this point, you have a see the dist folder.
After this, you can either run npm run start and you have to see
(this option is not suitable for SSR frameworks like NUXT or NEXT)
or if you don't have that option install an npm package that renders your compiled code by doing the following:
npm install -g serve
serve -s build
and you have to see
I'm new to node.js and just went through basic tutorials and now ready to set my project with Express.js installed as well.
I'm just wondering what happens if I change my project name to something else now that I've got the framework in place. Can I simply just rename the project directory or do I need some npm package to refactor it properly?
With Ruby on Rails, there is a gem for this purpose and wonder if it's the same for node.js project.
Can I simply just rename the project directory?
Yes.
Express is just a library.
Express-generator (which proviedes "express" command line) is a tool (not actually a framework) to easily build a basic project layout with express, jade and a few other common packages.
Out of the box you can run it by executing ./bin/www (or node bin/www).
Until now, project name doesn't care so far except for if you put it in some template, database register, etc...
Sure you will use some version control system (vcs) like git or subversion and, if you don't want to publish it as npm module, you doesn't need nothing more.
But, even if you doesn't plan to publish it at npm, it is a wonderful tool to manage your project packaging.
If you did it, (by executing "npm init"), then you can take advantadge of some facilities like:
Launch your project with 'npm start'.
Install modules with 'npm --save module_name'.
DON'T track node_modules directory in your vcs.
Get fresh node_modules directory for your current node version with 'npm install'
etc...
All this magic is thanks to a file named 'package.json'.
This file was generated when you did (if you did it) 'npm init' and contains a package name and a version number.
If you doesn't plan to publish your package it also doesn't care so much. But it is a bit more polite to update it accordingly if you rename your project.
I have to set-up node environment in my production system. I installed node in my local system its fine, after that i checked for version node -v.
Now i installed node in my production system using sudo apt get install nodejs and now i checked the version node -v nothing happened but i used nodejs -v, its working.
Also in my local system i used node filename.js to run my node app. But in my production system i have to use nodejs filename.js. I dont know why this happening? Also whether it will create problem in my production. Please share your ideas.
It's more linux specific question. You can create a symlink to use node instead of nodejs. Command example here:
sudo ln -sT $(which nodejs) /usr/local/bin/node
This is because your particular distribution of linux already has a node binary.
You're more than likely not using it for anything. You have two options.
rename the pre-installed node to something else, and rename nodejs to node
rename nodejs to node but make sure to adjust your $PATH so that node.js's directory is loading before the pre-installed node
I am trying to build an application for a local private network (with no access to the web) using meteor. From my research, I can't seem to find a way to take meteor 100% 'offline' meaning, no dependencies to web services to build / run.
I've looked at the following links - How can Meteor apps work offline? and here - https://groups.google.com/forum/#!topic/meteor-talk/tGto0cCsvXA
yet neither threads give a clear cut answer on if it's possible and how to go about formulating an approach.
I am hoping someone could provide guidance on how I would go about removing the meteor framework dependencies for online services. If this won't be possible, other suggestions for frameworks that play well for local private network apps would be most appreciated.
If I get you right, you wish to build a webapp that is to be deployed on a local network.
If that is indeed the case, then the answer is yes.
An example setup would be:
a server computer with linux (ex: Ubuntu server)
node installed on it (0.10.29 is necesarry for a 0.8.3 meteor app - see: https://askubuntu.com/questions/49390/how-do-i-install-the-latest-version-of-node-js)
mongodb installed and running as a service
then on your dev machine run
meteor bundle --directory /your/independent/app
Copy the app folder to the target machine
Though you will find more information in the bundled README (see below) I use the following bash script to start my app
rm -rf programs/server/node_modules/fibers
npm install ~/.meteor/tools/latest/lib/node_modules/fibers/
# npm install fibers#1.0.1
export MONGO_URL='mongodb://localhost/survey'
export PORT=3000
export ROOT_URL='http://127.0.0.1'
~/bin/node main.js
And that's about it. With these steps you can deploy an app created by meteor on any machine. The only dependencies being node (specific versions) and mongodb.
README (generated by meteor bundle)
This is a Meteor application bundle. It has only one dependency:
Node.js 0.10.29 or newer, plus the 'fibers' and 'bcrypt' modules.
To run the application:
$ rm -r programs/server/node_modules/fibers
$ rm -r programs/server/node_modules/bcrypt
$ npm install fibers#1.0.1
$ npm install bcrypt#0.7.7
$ export MONGO_URL='mongodb://user:password#host:port/databasename'
$ export ROOT_URL='http://example.com'
$ export MAIL_URL='smtp://user:password#mailhost:port/'
$ node main.js
Use the PORT environment variable to set the port where the
application will listen. The default is 80, but that will require
root on most systems.
Find out more about Meteor at meteor.com.
I have set up a PHP App Server Layer in my AWS OpsWorks stack which works fine. Now I need to have it install node.js as well in order to compile and minify stylus and coffeescript, run browserify and also compress pngs, all through Grunt on each deploy.
The steps/requirements are:
Install node.js
Install grunt-cli globally
Run npm install
Set write permissions for node on public/assets/
Run grunt deploy "install" hook preconfigured in package.json
Ideally uninstall node, npm and all node modules as they are no longer needed
I have tried setting the official cookbook as custom chef repo and including all the recipes from the node.js app server default recipes, but they fail as the app is not a node.js app.
Does anyone have any experience with this?