Javascript 更改节点REPL中的目录不工作?

Javascript 更改节点REPL中的目录不工作?,javascript,node.js,Javascript,Node.js,就在早些时候,我发布了我的问题: 我有一个文件hello.js,位于/Users/MyUser/Desktop/Node中/ 我可以看到我的默认目录是/Users/MyUser/ 好的,我知道我需要更改我的工作目录。到目前为止,我能找到的是使用process.chrdir('/Users/MyUser/Desktop/Node/) 很酷,这是可行的,但是现在当我离开REPL shell时,目录会重置 回答我问题的人说我需要运行>node init以及以后的npm安装--save 我的第一个问题

就在早些时候,我发布了我的问题:

我有一个文件hello.js,位于/Users/MyUser/Desktop/Node中/

我可以看到我的默认目录是/Users/MyUser/

好的,我知道我需要更改我的工作目录。到目前为止,我能找到的是使用process.chrdir('/Users/MyUser/Desktop/Node/)

很酷,这是可行的,但是现在当我离开REPL shell时,目录会重置

回答我问题的人说我需要运行
>node init
以及以后的
npm安装--save

我的第一个问题:我已经运行了node init,并且看到我可以创建这个package.json文件,这到底是做什么的

第二:有人告诉我需要增加依赖性。有人能给我解释一下节点术语的含义吗?依赖性是否只是指我希望节点包含的文件夹?是否要在桌面上添加此节点文件夹以运行脚本

我目前正在尝试学习LearnyYouNode课程,但是我不想将所有这些测试文件都保存在我的/User/MyUser目录中,因此任何建议都将不胜感激


感谢

这与node.js无关,而是Unix设计中固有的(这反过来会影响其他操作系统上shell的设计)

进程从其父环境继承值,但其环境是不同的

对流程环境如何工作的简洁描述有时会产生意想不到的行为:您无法更改父环境。它是以这种方式设计的,显然是出于安全原因

这意味着,当您更改进程中的工作目录并退出该进程时,shell的工作目录不会受到影响。实际上,即使进程(在本例中为节点REPL)正在运行,shell的工作目录也不会受到影响

写shell脚本的人经常会问这个问题,他们想写一个可以刻录到某处的脚本。但是,编写其他语言如Perl、Tcl、Ruby等(甚至是C)的人提出这个问题也是很常见的

无论使用何种语言,这个问题的答案总是一样的:不可能从另一个程序/脚本/进程CD

我不确定Windows是如何处理它的,因此可能在那里执行。但这在Unixen上是不可能的

我已经运行了>node 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安装
将安装一个包,以及它所依赖的任何包

套餐是:

  • 包含由package.json文件描述的程序的文件夹
  • 包含(1)的压缩焦油球
  • 解析为(2)的url
  • 在上发布的@与(3)
  • 指向(4)的@
  • 具有“最新”标签的a(5)
  • 解析为(2)的
  • 如果需要安装package.json中未包含的依赖项,只需执行
    npm安装
    。您是否希望在package.json中包含这个新安装的包完全由您决定。您还可以决定这个新安装的包将如何显示在您的
    包中。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 REPL只是提供了一种交互运行JavaScript并查看结果的方法。它可以用于调试、测试或只是尝试。
    process.cwd()
    指向启动REPL本身的目录。您可以使用process.chdir('/path')更改它,但是一旦关闭REPL会话并重新启动,它将始终将
    process.cwd()
    重新实例化到启动它的目录

    如果您正在node project1中安装一些包/依赖项,并且认为这些依赖项对node project2也很有用

    • 为project2再次安装它们(以获得独立的
      节点\u模块
      目录)
    • 全局安装它们[使用-g标志]。看
    • project2中的参考包作为
      var referencedependency=require('/home/User/project1/node_modules/')
    只需在REPL中执行
    process.chdir('/home/User/project1/node_modules/')
    ,并引用为 js文件中的
    var referencedependency=require(“”)
    不起作用

    >process.chdir('/Users/MyUser/Desktop/Node/)仅更改该特定REPL会话的工作目录


    希望有帮助

    谢谢你,讽刺的是,我正要亲自来回答我的问题。。在我考虑node之前,我必须在目录中,node只是我的计算机现在可以使用的运行时环境。我现在要去进一步了解js。再次感谢!
    var express = require('express');