早些时候,我发布了我的问题: https://stackoverflow.com/questions/28336443/how-to-not-put-my-js-files-in-user-myuser-for-node-js
我有一个位于/ Users / MyUser / Desktop / Node /
的文件hello.js我可以看到我的默认目录是/ Users / MyUser /
好的,所以我知道我需要更改我的工作目录。到目前为止我能找到的是使用>process.chrdir('/Users/MyUser/Desktop/Node/');
酷,这有效,但现在当我离开REPL shell时,目录重置。
回复我的问题的人说我需要运行>node init
以及之后npm install <name of dependency> --save
我的第一个问题:我已经运行>node init
并且看到我可以创建这个package.json文件,这究竟是做什么的?
其次:我被告知需要添加依赖项。有人可以向我解释这在节点方面意味着什么吗?依赖性仅仅意味着我希望节点包含的文件夹吗?我是否要在桌面上添加此节点文件夹以便能够运行我的脚本?
我目前正在尝试浏览learnyounode课程,但我不想将所有这些测试文件保存在我的/ User / MyUser目录中,因此非常感谢任何建议。
由于
答案 0 :(得分:2)
我已运行&gt;节点init并看到我可以创建 这个package.json文件,这究竟是做什么的?
npm init
用于以交互方式创建package.json文件。这会问你一堆问题,然后为你写一个package.json。
package.json
只是一个处理项目依赖项的文件,而包含与项目相关的各种元数据 [项目描述,版本,许可证信息等]
我被告知我需要添加依赖项。有人可以请 向我解释这在节点术语中意味着什么?
假设您在许多NPM模块上构建了一个依赖的应用程序,您可以这样在package.json文件中指定它们:
"dependencies": {
"express": "2.3.12",
"jade": ">= 0.0.1",
"redis": "0.6.0"
}
现在做npm install
会安装一个包,以及它所依赖的任何包。
包裹是:
如果您需要安装尚未包含在package.json中的依赖项,只需执行npm install <packageName>
即可。是否要在package.json中包含这个新安装的软件包完全是您的选择。您还可以决定新安装的软件包在package.json
npm install <packageName> [--save|--save-dev|--save-optional]:
--save: Package will appear in your dependencies.
--save-dev: Package will appear in your devDependencies.
--save-optional: Package will appear in your optionalDependencies.
嗯,部分是的。您可以将依赖项视为文件夹,通常存储在依赖项是否只是指我希望节点包含的文件夹?
node_modules
目录中。
我是否要在桌面上添加此节点文件夹以便能够运行我的 脚本?
不,节点管理它。 npm install
将自动创建node_modules
目录,您可以参考这些依赖项
你的.js文件中的require()
var express = require('express');
Node REPL简单地提供了一种交互式运行JavaScript并查看结果的方法。它可以用于调试,测试或只是尝试一下。
process.cwd()
指向已启动REPL的目录。您可以更改它using process.chdir('/path')
,但关闭REPL会话并重新启动后,它将始终重新实例化 process.cwd()
到它已启动的目录。
如果要在节点project1中安装某些软件包/依赖项,并认为这些依赖项也可用于节点project2,
node_modules
目录)var referencedDependency = require('/home/User/project1/node_modules/<dependency>')
只需在REPL中执行process.chdir('/home/User/project1/node_modules/')
并引用为
您的js文件中的var referencedDependency = require('<dependency>')
无法正常工作。
>process.chdir('/Users/MyUser/Desktop/Node/');
仅针对该特定REPL会话更改工作目录。
希望它有所帮助!
答案 1 :(得分:0)
这与node.js无关,但在Unix的设计中相当固有(反过来影响其他操作系统上的shell设计)。
进程从父级环境继承值,但它们的环境是不同的。
关于流程环境如何工作的简洁描述有时会出现意外行为:您无法更改父级环境。出于安全原因,它是以明确的方式设计的。
这意味着,当您更改进程中的工作目录并退出该进程时,您的shell的工作目录不会受到影响。实际上,即使进程(在本例中为节点REPL)正在运行,shell的工作目录也不会受到影响。
编写shell脚本的人经常会想要编写一个CD到某个地方的脚本。但是,人们在编写Perl,Tcl,Ruby等其他语言(甚至是C)时也会发现这个问题也很常见。
无论语言如何,这个问题的答案总是一样的:不可能从其他程序/脚本/进程中获取CD。
我不确定Windows如何处理它,因此可以在那里进行。但是在Unixen上它是不可能的。