.deno_plugins folder created on Deno program API - javascript

On execution, Deno caches remote imports in a special directory specified by Deno Environment on the first run. The second time and so forth execution of the same piece of the code, i.e, next time you run the program, no downloads are made.
If the program hasn't changed, it won't be retranspiled either.
It is cached in following folders as specified in the documentation
On Linux/Redox: **$XDG_CACHE_HOME/deno or $HOME/.cache/deno**
On Windows: **%LOCALAPPDATA%/deno (%LOCALAPPDATA% = FOLDERID_LocalAppData)**
On macOS: **$HOME/Library/Caches/deno**
In a project, I am working in, created a .deno_plugins
I am using deno_mongo(Native Deno MongoDB driver); is that the reason why this folder is generated? Why and when does .deno_plugins get generated?
Folder Structure of the project I am working on
Note:- PFA the folder structure image.

auto-loading prebuilts
during import the module searches a shared library for your os within the directory ./.deno_plugins - configurable via environment variable DENO_PLUGINS. if the plugin can not be located a suitable prebuilt will be fetched from github releases.
So internaly may be in deno_mongo this mechenism is used

Yes, deno_mongo has created .deno_plugins. The folder is created on the home directory of the file that you run. You must have run the app.ts file, so it got created there.

Related

Beginner having trouble running Javascript on Visual Studio Code

New coder here. As the title suggests, I spent the past two hours trying to run a simple Javascript on VSC with no avail. Could someone help me set my sandbox up? Here is a screenshot.
Much appreciated!
kt
Downloaded VSC
Downloaded nodejs
Entered "node scriptname.js" in terminal
Error message above
Your specific error is caused by you running node from the console and providing the wrong path to test.js.
You are in the Desktop directory and just specifying a file name, so Node is looking for test.js in the Desktop directory.
You have saved test.js in a directory called Coding Practice.
You need to either:
cd to the correct directory or
Provide the path to the directory as part of the second argument
Typically, when using VS Code, you would pick the Open Folder option from the File menu to work within your project's root directory (i.e. Coding Practice) which will provide you with a file list and do things like open the terminal in that directory by default.
Once you solve that problem you will run into your second problem.
The contents of test.js isn't JavaScript!
It's an HTML document with JavaScript embedded in it.
You need to:
Give it a .html file extension and
Open it using a web browser and not with Node.js (the traditional way to do that from within VS Code is with the live server extension but you'll really want to have VS code open in the right directory (as above) for that.)
You can't even remove the HTML from the file and run it with Node.js because alert (the function you call) is a Web API and not core JavaScript nor a Node.js API.

Where is "~/.gradle" folder in Windows?

I was following the React Native document to create a signed APK.
Source
Setting up Gradle variables
Place the my-release-key.keystore file under the android/app directory
in your project folder.
Edit the file ~/.gradle/gradle.properties and add the following
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=*****
MYAPP_RELEASE_KEY_PASSWORD=*****
Originally, I thought ~/.gradle is <project folder>/android/.gradle. However, it is not... In the command line, I ran the cd ~/.gradle/ command and it says:
The system cannot find the path specified.
Would you please let me know where is this folder (in Windows), so I can create gradle.properties? Thank you.
~ is used to represent the home directory (on unix based systems). When on windows the equivalent would be C:\Users\username\.gradle dir. Of course username would have to be changed for your username. This is where it is on my computer.

How to push a Yeoman app to a server

I am trying to push a project I created using the Yeoman's angular generator template to a server.
This is my project -
This is in my app folder -
This is the node-modules folder. For some reason, Yeoman has installed several node-modules. I am not using all of these.
The list goes on. This is just a small snippet of what's in the node-modules folder.
In order to push to the server, I am using grunt build. This generates a dist folder with the following content -
.
However when I navigate to my views, (e.g. reset-password), I get an error that this file is not available.
I am guessing this is because the dist folder doesn't have the views folder that the app folder does.
My final requirement is I want to push this project to the server, so that it is accessible to anyone. I don't want to push all the node-modules because I am not using them.
UPDATE -
This is the content in dist/scripts/ -
In the script.2a4ac124.js file, all my views are referenced but when I try to navigate to - file:///Users/proj/Documents/sso/dist/reset-password I get a file not found error, but when I navigate to file:///Users/proj/Documents/sso/dist/index.html#/ I see the index page.
installing node modules is normal - it installs development dependencies, which will be used in the grunt tasks that Yeoman creates. The reason there are so many is because the dev dependencies have their own dependencies that need to be resolved.
reset-password navigation error is most likely some build error, though it is difficult to tell just from the description. Yeoman converts the view files into angularJS templateCache and puts them into the concat/uglified js file (usually the app-.js file). First see if they are there. If they aren't, the view files aren't getting build. If they are there, it could be that the templates are incorrectly cached, or it could also be something else totally.
To deploy your application, simply copy the contents of dist folder to wherever you are deploying. You don't need the node_modules, since they are only used for performing dev. tasks.
Also,
Your screenshots show a SignUpCtrl.js file at the app root. Yeoman scaffoldings, whichever one you are using, usually aren't designed to have script files at the app root. Try putting it back inside the scripts file first.

Meteor and the /private directory

I'm using the /private directory in Meteor 1.0.3 at the moment to store and serve up pdf documents to the browser.
As an example, I have a folder structure like so:
/application-name
/private
/files
/users
/user-name
/pdf-file1.pdf
I have a template with a button click event. In this event I make a couple of calls to Meteor methods and finally a server side Iron Router go('render-pdf') method. In these Meteor methods I use fs node.js to:
(1) check if the /user-name directory exists, and if it doesn't I
create it.
(2) create the pdf-file.pdf file
Then in the server side Iron Router go('render-pdf') route, again using fs node.js to:
(3) read the created pdf-file.pdf and
(4) finally render it to the browser
The problem is in step (1), when creating the /user-name directory, Meteor server restarts. In step (2), again Meteor server restarts.
But most importantly, the first time my code runs, and the directory
does not exist (step (1)), I get an error.
I can then call the button event again, this time after the directory has been created, and the pdf is rendered fine.
The error looks like so:
Error: ENOENT, no such file or directory '/Users/myname/meteor/meteor-application/private/files/users/user-name/pdf-file.pdf' at Object.fs.openSync (fs.js:438:18) at Object.fs.readFileSync (fs.js:289:15) at [object Object].Router.route.name (meteor-application/both/routes.js:225:17) at boundNext (packages/iron:middleware-stack/lib/middleware_stack.js:251:1) at runWithEnvironment (packages/meteor/dynamics_nodejs.js:108:1) at packages/meteor/dynamics_nodejs.js:121:1 at [object Object].urlencodedParser (/Users/myname/.meteor/packages/iron_router/.1.0.7.15dqor4++os+web.browser+web.cordova/npm/node_modules/body-parser/lib/types/urlencoded.js:72:36) at packages/iron:router/lib/router.js:277:1 at [object Object]._.extend.withValue (packages/meteor/dynamics_nodejs.js:56:1) at [object Object].hookWithOptions (packages/iron:router/lib/router.js:276:1)
It's probably that when I get to the point step (4) of trying to render the file, it either doesn't exist yet or the application is restarting. The next time I try the application has already restarted and files exist.
I was under the impression that the /private directory provides a
place to handle files that do not affect the execution of the
application? To me this means, at runtime I can add whatever I want without the application restarting.
Little history
At first I used the /server directory with a ./folder-name subdirectory. This worked as when I added folder and files the application didn't restart. The downside is when I deployed Meteor using the great Meteor-up package (mup), the deployment bundle ignored these files unless I added a *.js file somewhere inside. And further, if I created the 'hidden' folder structure on my EC2 instance, the deployment would remove the directory.
So using /private folder solved this issue, or so I thought. The folder structure and 'assets' deployed. But the downside to this approach is when I add 'assets' to it, it seems to restart -- even though I though this wasn't something that was suppose to happen.
Question
How can I add 'assets' (in the form of directories and files) under the /private directory without the Meteor application restarting? If this can't be done, how can I add 'assets' anywhere only server side without the application restarting?
Please note
When I deploy to production, I'd like some of the folder structure to stay in place, for example:
/private/files/users
should say there, while the
/user-name
directory can be dynamic. I only mention this because I've read if you do a /.directory-name, Meteor ignores the folder and its contents. But this includes deployments as well.
What I really need
A server side only folder that gets included in the deployment bundle, and when I add 'stuff' to it at runtime, doesn't restart my application...
Either a way to include /.hidden-folder in my mup deployment
bundle or have the /private folder not restart every time I add
stuff to it at runtime.
In order to keep from:
(1) overwriting/removing the directory structure every time I deployed and,
(2) restarting the Meteor application every time I created a directory or file.
I decided in my case it just made sense to use a directory structure outside of the Meteor project instead of inside as before.
Something like Dropbox/users/user-name, or anything really.
I now believe that the /private and /public folders are more for static content than anything else.
I'm not really storing that many files yet, and some of them are only temporary anyhow, so this method will hold me over until I move to something like S3.
Please note:
(1) You need to give your Meteor user permissions to access the outside-the-project directory.
(2) Consider that this will take up space on your OS Instance HD.
(3) You'll need to use Node.js for file system calls. These calls are not wrapped in Meteor Fibers, so you're on your own in terms of async/sync programming.

How do I obtain the path of a file in a Meteor package?

I know how to get the current directory from a Meteor package, but how do I get the path of a specific file in the project?
node's __dirname and __filename don't work in Meteor.
It is complicated.
meteor run copies your project files to a tree of directories inside <project-dir>/.meteor/local/build, reorganizes them in non-obvious ways (e.g.. the private subdirectory in the original tree becomes the assets subdirectory) and mixes it in with various npm modules to create a bundle that can be executed as a nodejs project. Indeed, to avoid duplications, there is a .gitignore file automatically set up in the .meteor directory that tells git, if you use it for version control, not to copy the .meteor/local directory.
The original project directory gets watched in case you change a file. The change then gets copied into the current project build directory and the project rebuilt.
If you deploy to a remote system, the build gets copied to a server and then run.
process is usually a defined global server-side object, and works according to the node.js API, because the meteor server code is ultimately running in node.js.
So you can run console.log(process.cwd()); in your server-side to obtain the current working directory for the server process, usually something like:
~/<meteor project directory>/.meteor/local/build/programs/server
This suggests that when meteor run is done locally, original project files are in ../../../../../, but don't use that as it may change in the future.
Instead, for the directory containing the original project files, you could use:
baseDir = process.cwd().replace(/\/\.meteor.*$/, '');
This will get the working directory, and truncate everything beginning with /.meteor
This won't work for a server deploy, though, because the original project tree is not needed on the server, only the build. Files that aren't intended to be client or server code could possibly be stuck in the private subdir, which as I mentioned becomes the assets subdir in the build. Ways to currently find files in the build is either manual inspection .meteor/local in a local run, or use of a JS library that calls or imitates gnu find.
Since you mentioned packages, I note that in the build, server-side package code finally ends up in:
~/<project-dir>/.meteor/local/build/programs/server/packages
and client side in:
~/<project-dir>/.meteor/local/build/programs/web.browser/packages

Categories