VSCode with WSL - How to use Bash for the launch configurations? - node.js

I use Visual Studio Code to develop a TypeScript Node application on Windows 10, with WSL enabled.
Thanks to other threads, I'm almost able to run a VSCode task with Bash on Ubuntu on Windows.
But now I try to do the same with a launch configuration. How can I make a launch configuration to use the node executable installed in WSL instead of the one installed on Windows?
If I run this command directly in the integrated terminal, with Bash, it works :
node src/start.js
But when I press "[F5]" and start a launch configuration that runs this same file, I get an error : "Error: %1 is not a valid Win32 application". This is because the oracledb library is used and has been compiled in Bash, not in Windows.
How can I make a launch configuration use Bash to run Node?
UPDATE : I opened an issue about that on VSCode's GitHub page.

Not if sure you still need help.
open bash outside of the vs code.
then run the following command, to install node.
sudo apt install nodejs-legacy
and you should be able to run node with bash in vs code.

Related

ng commands always return "This: not found" on Windows WSL 2

I'm new on Angular, and I'm not able to run ng commands on WSL version 2.
I installed Angular CLI running:
npm install -g #angular/cli
After that I created a new npm project folder and a package.json running:
npm init
But every ng command returns:
/mnt/c/Users/xxxxxx/AppData/Roaming/npm/node_modules/node/bin/node: 1: This: not found`
I installed Node.js on Windows with an executable (so under PowerShell, everything works as expected). Am I wrong with this?
I installed Node.js on Windows with an executable before (so on PowerShell works), am I wrong with this?
Not, necessarily "wrong", but it's likely part of the problem. But you are certainly correct to question it and provide it as a critical detail in your post!
While WSL can launch Windows executables, keep in mind that those Windows executables (npm in this case) typically only understand Windows paths, processes, environment variables, etc.
npm on the Windows version of Node is a bit unusual, thought. It provides a Bash shell script, which is actually what is being called when you run npm under WSL. That shell script was originally designed for Cygwin and Git Bash, but I see that Node recently added checks in it for WSL as well. Before that, even (the Windows version of) npm itself would have issues under WSL.
But regardless of whether they've fixed npm to work under WSL, then you run into the next level of issues since Angular hasn't modified ng to detect when it is running under WSL.
Without having dug into the source code, ng is going to see that it is running under the Windows version of Node and try to use Windows tools and paths. In my test under WSL (using the Windows version of Node/npm), what seems to happen is that ng new project tries to start CMD.exe. Since it is running under the Windows version of Node, it naturally assumes that CMD.exe is available.
And it is, but starting CMD.exe from inside WSL will attempt to start in a UNC path (\\wsl$\<distroname>\path\to\current\project\dir or \\wsl.localhost\...). CMD doesn't support UNC paths, so it defaults to the Windows directory itself, and I get:
EPERM: operation not permitted, mkdir 'C:\Windows\project'
While you are getting a different error, to be sure, it's almost certainly related to this root issue.
To make a long story longer, see my advice in the question, How to organize programming languages and libraries in WSL and Windows 10.
To summarize it, when using development tools, either:
Use the Windows version of the toolchain (editor, commandline, SDK, tools, etc.)
Or use all-Linux versions of the toolchain.
Also, though, be careful with Node specifically. You can install:
The Windows version of Node for when you are using Windows tools
The Linux version of Node for when you are using WSL tools
But when you are running in WSL/Linux, make sure that the Linux version of npm and node appear first in the path, before the Windows version. This is, again, because of the fact that the Windows version provides that shell script. If the Windows version comes before the Linux version in your Linux PATH, then you will continue to have issues since the Windows npm will get called under WSL (as it is now).

Where to see list of programs installed via command prompt?

I am new to windows and recently installed angular with the following steps,
- 1> Downloaded and installed Node, -2> Used npm install -g angular/cli, via command prompt. My question here is - I could see Node.js in the list of installed programs in control panel, I am not seeing angular here. I referred to the PATH environment variable where I could see path for Node.js but no path was specified for angular. Where will I be able to see the programs installed via command prompt ?
I referred google and did thorough exploration of my windows system

Using Visual Studio Code on Windows with Ubuntu-Bash and NodeJS

I'm trying to figure out how to do my web development on Windows using the relatively new Windows Subsystem for Linux (Bash on Ubuntu on Windows) in conjunction with Visual Studio Code. I've configured the IDE to use the Bash in its integrated terminal, and I've set the project up such that the files are accessible in both the Linux and Windows file system.
The last thing I want to get set up is to get the IDE set up with NodeJS, but not NodeJS for Windows. I want it to use an installation of NodeJS in the Linux Subsystem. Does anyone know if it's possible to point VS Code to the Node installation in the Linux Subsystem?
This was a stumbling block for me too, until I found out that the real problem is that there's a pathing issue with WSL that creates a conflict if you already have NPM installed for Windows. Hopefully you've already figured this out yourself, but for anyone else who hits this, I'm copying in an excerpt from my longer guide on Visual C + WSL that's specific to this problem alone.
Given what you've said, I'll assume you already have node and NPM already installed in WSL's Ubuntu.
Using your favorite CLI editor (such as nano, vim, emacs, cat and sed… etc), open your ~/.profile
nano ~/.profile
Note: do NOT attempt to edit Linux files using Windows tools. (Thanks to #david-c-rankin's comment for the official link with the bold red text explaining this) If you don't want to use a CLI editor for this in the terminal, see the bottom of the answer this is excerpted from for a link on how to get a GUI one running.
Currently, the default bash PATH variable in WSL is
PATH="$HOME/bin:$HOME/.local/bin:$PATH"
Which is injecting the windows path after the first two binary directories. Unfortunately, this doesn't result in /usr/bin being used before the windows installed npm, so add that before the final $PATH:
PATH="$HOME/bin:$HOME/.local/bin:/usr/bin:$PATH"
Save out, and then either reload the terminal or just source the path file
source ~/.profile
VSCode (v1.18) now has better WSL support for Node:
I use nvm to install Node on Ubuntu, although it should work fine if you install it normally.
e.g.
nvm install 9.2.0
nvm alias default 9.2.0
From the VSCode docs
If you want to run Node.js in the Linux subsystem on Windows (WSL), you can use the approach from above as well. However to make this even simpler, we've introduced a useWSL flag to automatically configure everything so that Node.js runs in the Linux subsystem and source is mapped to files in your workspace.
Here is the simplest debug configuration for debugging hello.js in WSL:
{
"type": "node",
"request": "launch",
"name": "Launch in WSL",
"useWSL": true,
"program": "${workspaceFolder}/hello.js"
}
I opened bash outside of the vs code and run the following command, to install node.
sudo apt install nodejs-legacy
and I'm able to run node with bash in vs code.

Odoo Mac OSX installation get error "Could not execute command lessc" in PyCharm Community Edition

I installed Odoo 9 on Mac OSX using Homebrew virtual environment.
I installed npm, less and less-plugin-clean-css.
Finally if I launch Odoo from the Mac Terminal, using the appropriate parameters, everything goes well and I can enter my odoo with localhost:8069.
I then setup PyCharm Community Edition for odoo development, but when I run odoo from within PyCharm I get the error:
"Could not execute command lessc"
and obviously the web layout is totally wrong.
I saw here NodeJS plugin in IntelliJ Community Edition does not work that you cannot use NodeJS plugin with PyCharm CE.
My question then is: "How to enable PyCharm CE to use less and get rid of the error?".
If you are in Pycharm in getting error Could not execute command lessc and you have installed less which you can check by entering lessc command in terminal
Fix:
If you are using virtualenv then activate virtualenv from terminal and restart the server again from terminal, this time it won't give any error.
If you are not using virutalenv then you can just run from terminal server without any problems
I'm not sure why this problem is specific to PyCharm.
I had the same issue from PyCharm Professional, but I solve this issue with this way
When i finish installing the PyCharm pro ,then i set the environment variables in the 'run/debug configuraition'
(/usr/loca/bin)
which value(path) i found is using command "which lessc" in the terminal
Then I think the PyCharm can find lessc, and finnally I get rid of this nightmare
`Could not execute command 'lessc'
For me, updating the node was the solution. It was version 0.10.33. Now it's 6.1.12.
Check out this answer. You must uninstall node and reinstall it in a certain order:
https://stackoverflow.com/a/36395799?noredirect=1
At least that is what worked for me.

visual studio code nodejs request 'launch': cannot launch target (reason: spawn node ENOENT)

When I use visual studio code to debug a nodejs app.
visual studio code tell me request 'launch': cannot launch target (reason: spawn node ENOENT)
My nodejs version is 4.2.4
Managed to get past this when running on Windows by specifying npm.cmd instead of npm in the VS code debug configuration like so
"runtimeExecutable": "npm.cmd",
Some discussions are posted in this here
How do I debug "Error: spawn ENOENT" on node.js?
Especially, the following points should be checked
Ensure the environment variable PATH is set
PATHEXT environment variable that can cause certain calls to spawn to not work on Windows.
I was getting this error on a Debian Linux system. I noticed the same thing worked OK on Windows.
Next I noticed that the Node.JS executable is called node on Windows but on Debian (and on Debian-based systems such as Ubuntu) it's called nodejs. So I created an alias - from a root terminal, I ran
ln -s /usr/bin/nodejs /usr/local/bin/node
and this solved the problem.
This usually happens if you already had your Visual Code Editor running while installing node js on Windows OS. I would advise you to shut down your Visual Studio Code and restart it. This problem should go away.
If not do a machine reboot and verify if the debug works flawlessly

Resources