Open new terminal in MacOSX and run node script - javascript

I have been trying to figure out how to open a new terminal window from a Node application and run a preset command or script there.
I can open the terminal window:
const { exec } = require('child_process')
exec('open -a Terminal ' + process.env.HOME)
And this works fine, I have done a bit of research but it seems I can only find examples directed to bash
Could anyone help me on this?
Thanks

One way to do this would be to place the commands you want to run in a shell script with the .command extension. By default, these files will be opened in the Terminal application on macOS. This is a bit of a workaround, but I think it achieves what you would like to do.
Say we have the file hello.js containing the following:
console.log("Hello World")
And the shell script run_node.command
#!/bin/bash
node hello.js
Running the command open run_node.command will open a new Terminal.app instance and run the shell script, which in turn runs the node command. The terminal will close when the script exits.

Related

How to get output of the JS file using VS Code

When I run the code, nothing shows in "Output" tab. I installed nodejs as well as Code runner extension. How to fix this issue?
enter image description here
I want to get the output of my code.
Install Node.js from https://nodejs.org.
open VS Code.
from the file tab at the top, choose open folder.
navigate to your working directory where your project is open.
from the terminal tab at the top, choose new terminal.
in the terminal, write the following command:
node sample_1.js
replace the sample_1.js with your file name
This is the top menu
and this is the terminal:
--
and you don't need a code runner extension, every time you want to run your JavaScript code, write the command
node YOUR_FILE_NAME.js
Otherwise, if you want something to automatically detect the changes you make to your file and automatically run the code when you save the file, you'll need a package like nodemon.
to install nodemon, in the same working directory, open up the terminal and write the following commands:
npm init -y
and then:
npx nodemon sample_1.js
replace the sample_1.js with your file name
Nodemon will keep running in the background and every change you make to any of your files in your working directory will make nodemon reload, and you'll see the changes in the terminal immediately.
I fixed that issue. I installed JavaScript Debugger(Nightly). After that now OUTPUT tab shows output of the js file.
https://marketplace.visualstudio.com/items?itemName=ms-vscode.js-debug-nightly

How to open non integrated terminal window from vscode extension?

I am developing an extension for Visual Studio Code. I need to open a terminal window and run some command there (One after another finishes). Same as Terminal.sendText but not in integrated terminal. Is there a way to do that?
Update
The closest I've got is using:
const childProcess = spawn('node', ['--version'],{
shell: true,
detached: true,
windowsHide: false
});
And the problem is it closes automatically
You could possibly run the machine's terminal application and specify a command to run, like with mate-terminal, -e option. You could then run bash with certain startup commands How to invoke bash, run commands inside the new shell, and then give control back to user?

How to run javascript with require node modules in local [duplicate]

I am trying to run a hello world program written in javascript in a separate file named hello.js
Currently running windows version of node.js.
The code runs perfectly in console window but how do I reference the path in windows environment.
C:\abc\zyx\hello.js
in Unix I guess it is showing $ node hello.js
I'm absolutely new to Node.js Please correct me if I am doing something wrong.
I tried
> node C:\abc\zyx\hello.js ----didn't work
> C:\abc\zyx\hello.js --didn't work
UPDATE1:
Added node.exe to the folder where hello.js file is sitting.
Added path point to the folder c:\abc\zyx\ and I get an error that says
ReferenceError: hello is not defined
see contents of hello.js
setTimeout(function() {
console.log('World!');
}, 2000);
console.log('Hello');
UPDATE 2:
So far I have tried all these version and none of them seems to work. May be I am doing something completely wrong.
>node hello.js
>$ node hello.js
>node.exe hello.js
>node /hello.js
>node \hello.js
> \node \hello.js
> /node /hello.js
> C:\abc\xyz\node.exe C:\abc\xyz\hello.js
> C:\abc\xyz\node.exe C:/abc/xyz/hello.js
> hello.js
> /hello.js
> \hello.js
>node hello
Refer to my file structure
.
├── hello.js
├── node.exe
└── paths.txt
RESOLVED:
Instead of running node.exe, try running in command prompt with the following option and it worked.
c:\>node c:\abc\hello.js
Hello
World! (after 2 secs)
Here are the exact steps I just took to run the "Hello World" example found at http://nodejs.org/. This is a quick and dirty example. For a permanent installation you'd want to store the executable in a more reasonable place than the root directory and update your PATH to include its location.
Download the Windows executable here: http://nodejs.org/#download
Copy the file to C:\
Create C:\hello.js
Paste in the following content:
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(1337, "127.0.0.1");
console.log('Server running at http://127.0.0.1:1337/');
Save the file
Start -> Run... -> cmd
c:
C:>node hello.js
Server running at http://127.0.0.1:1337/
That's it. This was done on Windows XP.
Install the MSI file:
Go to the installed directory C:\Program Files\nodejs from command prompt n
C:\>cd C:\Program Files\nodejs enter..
node helloworld.js
output:
Hello World
You need to make sure that node is in your PATH. To set up your path, this out.
Make sure that the directory that has node.exe is in your PATH. Then you should be able to
run node path_to_js_file.js.
For a good "Hello World" example, check out: http://howtonode.org/hello-node
another simple way
download nodejs to your system
open a notepad write js command "console.log('Hello World');"
save the file as hello.js preferably same location as nodejs
open command prompt navigate to the location where the nodejs is located
c:\program files\nodejs
and run the command from the location like c:\program files\nodejs>node hello.js
in case the js file in another location give the path of file
c:\program files\nodejs>node path\hello.js
I installed node for windows.
There is a node.js command prompt when I search for node.js in windows 7 start menu
If you run this special command prompt, you can node anything in any location without setting up the path or copy node.exe everywhere.
WinXp:
I have created a .bat file
node c:\path\to\file\my_program.js
That just run my_program.bat from Explorer or in cmd window
Go to cmd and type: node "C:\Path\To\File\Sample.js"
Windows/CMD does not know where the node file is located. You can manually type out:
path=%path%;"c:\Program Files\nodejs"
each time you open a new cmd.exe prompte
OR (in Windows 10),
right click on This PC -> properties.
Click on Advanced system settings -> Environment Variables (bottom right).
Select Path and click Edit.
Click new and enter C:\Program Files\nodejs.
Reboot and you should be able to run node from any directory.
Just change file association of .js file to node.exe and you can run directly from explorer.
Right click on the file -> Select "Open with" -> Select "Choose another program"
Check box "Always use this app to open .js file"
Click "More apps" -> "Look for another app in PC"
Navigate to node.js installation directory.(Default C:\Program Files\nodejs\node.exe"
Click "Open" and you can just see cmd flashing
Now you will be able to run any .js files directly just by double clicking.
Note: Adding below code to the end of js file will be useful as it will keep the console open for a keystroke.
console.log('Press any key to exit');
process.stdin.setRawMode(true);
process.stdin.resume();
process.stdin.on('data', process.exit.bind(process, 0));
The problem was that you opened the Node.js repl while everyone automatically assumed you were in the command prompt. For what it's worth you can run a javascript file from the repl with the .load command. For example:
.load c:/users/username/documents/script.js
The same command can also be used in the command prompt if you first start node inside the command prompt by entering node with no arguments (assuming node is in PATH).
I find it fascinating that 1)everyone assumed you were in the command prompt rather than repl, 2)no one seems to know about .load, and 3)this has 273 upvotes, proving that a lot of other node.js beginners are similarly confused.
Step For Windows
press the ctrl + r.then type cmd and hit enter.
now command prompt will be open.
after the type cd filepath of file. ex(cd C:\Users\user\Desktop\ )
then hit the enter.
please check if npm installed or not using this command node -v.
then if you installed will get node version.
type the command on command prompt like this node filename.js . example(node app.js)
C:\Users\user\Desktop>node app.js
type node js command prompt in start screen. and use it.
OR
set PATH of node in environment variable.
Install node properly, that's it.
Now open terminal to path where your .js file is.
for example- if Javascript file(fileName.js) is at folder C:\Documents\Project1.
Just go to that folder, type node to check node is enable
then type node fileName.js
Simple! Your work is done!!
c:\> node.exe %CD%\hello.js
%CD% captures the current directory under DOS
For all stuck on how to start!
https://github.com/sethvincent/javascripting
Copy here incase link dies:
Open node.js command prompt
Make directory called javascripting by typing "mkdir javascripting"
Change directory into the javascripting folder by typing "cd javascripting"
Create a file named introduction.js by typing "touch introduction.js" OR FOR WINDOWS: "NUL > introduction.js"
Open the file and type some javascript e.g. "Console.log('hello');"
Save the file and check it runs by typing "javascripting verify introduction.js"
All you have to do is right click the .js file on Windows and press "Open with Command Prompt"
OR
Open cmd, copy the path to the folder containing your script, and run the command "cd [paste text here]". Then do "node example.js"
I had such problem for windows. And I decided it so:
startApp.cmd:
#set JAVA_HOME=C:\jdk160_24
#set PATH=%JAVA_HOME%/bin;%PATH%
#cd /D C:\app\
#start /b C:\WINDOWS\system32\cscript.exe
C:\app\start.js
and saved it cmd file in dir C:\scripts
next file is runApp.bat:
C:\scripts\startApp.cmd

Issue related to running of New React App

I installed Nodejs(v 10.16.0 LTS) and then using Windows Powershell I run following commands
npx create-react-app my-app
cd my-app
npm start
The actual problem I am facing is that if PowerShell window is opened in the background, then my code works properly. But when I close PowerShell and reload Browser Tab, the error occurs which say
This site can’t be reached
localhost refused to connect.
Try:
Checking the connection
Checking the proxy and the firewall.
Kindly help me to figure out this issue. Thanks
When you close PowerShell window you terminate your React app as well, it has to stay opened. Running npm start kicks off local server with your app running. If you want to have possibility to have application running with terminal closed you can use libs like https://www.npmjs.com/package/forever, but I do not recommend that- it's easy to forget you have one app instance running already :)
When you run the command npm start, this is the expected behaviour. This command spawns a new npm instance in the directory from where you have executed it and directs it to start a server. The catch here is that the server runs as an attached process with PowerShell, by default and it is bound to terminate once you close the PowerShell window.
To manually detach a process from the terminal, we use an & after the command on a UNIX-based system (Linux, MacOS etc.) something like npm start &.In case of PowerShell, you can make use of a built-in function called Start-Process like this -
Start-Process -NoNewWindow npm start
If you'd like to read more about it, you can refer a blog post here - https://ariefbayu.xyz/run-background-command-in-powershell-8ea86436684e

Install Node.js

I'm completely new to node.js. By reading the documentation and tutorials, I managed to download and install node.js on my windows.
How do I test it and make it work?
The file test.js is saved in the same directory as node.exe and contains:
console.log('Hello World');
Openning the command-line I typed:
$ node test.js
But nothing hapenns, just:
...
You are typing node test.js in the Node REPL not the command line. The ... is indicating that you haven't reached the end of a valid statement yet (because you are writing shell and not JavaScript).
Run a command line with your terminal emulator of choice (probably Windows Powershell if you are using Windows).
Run the Node REPL by executing node via the command-line without any arguments. The reason you're not getting the expected results is probably because you're running node.exe directly. Since you're using windows, start up CMD and run node.exe from there. Once you have the REPL running, try node test.js again, and this time it will work.
![enter image description here][1]I have run it in nodejs shell and it is simply working
> console.log('Hello World');
Hello World
undefined
>
Also I opened nodejs command prompt not default command prompt of windows and then
node path_to_file
it is working... same output

Categories

Resources