2015-02-05 28 views
0

不僅限於之前,我貼我的問題: https://stackoverflow.com/questions/28336443/how-to-not-put-my-js-files-in-user-myuser-for-node-js在節點REPL中更改目錄不起作用?

我有一個文件,hello.js,位於/用戶/ MYUSER /桌面/節點/

我可以看到我的默認目錄是/ 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

這有什麼好做的node.js,但是在UNIX(這反過來又影響炮彈在其他操作系統上的設計)的設計,而內在的。

進程從父級環境中繼承值,但是它們的環境是不同的。

對過程環境工作方式的簡要描述有時會出現意外的行爲:您無法更改父母的環境。出於安全原因,它被明確地設計。

這意味着什麼,當你改變一個進程中的工作目錄並退出這個進程時,你的shell的工作目錄不會受到影響。實際上,即使進程(在本例中爲節點REPL)正在運行,您的shell的工作目錄也不受影響。

這個確切的問題經常被編寫shell腳本的人想要寫一個腳本把CD放到某個地方。但是,通過編寫其他語言(如Perl,Tcl,Ruby等)(甚至C)來發現這個問題也很常見。

不管語言如何,這個問題的答案都是一樣的:從另一個程序/腳本/過程中不可能獲得CD。

我不知道Windows如何處理它,因此它可能會在那裏做到。但是在Unixen上這是不可能的。

+0

謝謝你的這個,諷刺的是,我正準備自己回答我的問題。在我甚至想到節點之前,我必須進入目錄,這只是我的計算機現在可以使用的運行時環境。 我現在要進一步瞭解我的知識。再次感謝! –

2

我已經運行> node init,看到我可以創建 這個package.json文件,這到底做了什麼?

npm init用於創建包。json文件交互式。這會問你一堆問題,然後爲你寫一個package.json。

package.json只是該處理項目的依賴持有有人告訴我,我需要添加相關的項目 [項目描述,版本,許可證信息等]

各種元數據文件依賴。有人請 向我解釋這是什麼節點條款?

比方說,你正在構建一個應用程序,對一些NPM模塊是依賴,你可以在你的package.json文件中指定他們這樣說:

"dependencies": { 
    "express": "2.3.12", 
    "jade": ">= 0.0.1", 
    "redis": "0.6.0" 
} 

現在做npm install會安裝一個軟件包,以及它依賴的任何軟件包。

包是:

  1. 含有通過的package.json文件中描述的程序的文件夾
  2. 含有一個壓縮壓縮包(1)
  3. 解析爲(2)
  4. 一個url (3)
  5. a @指向(4)
  6. a有一個「最新」標籤滿足(5)
  7. 一個解析(2)

如果您需要安裝未列入的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目錄,你可以參考這些依賴與 require()在您的.js文件

var express = require('express'); 

節點REPL只是提供了一種交互運行JavaScript和看到的結果。它可以用於調試,測試或只是試用。 process.cwd()指向REPL本身已經啓動的目錄。您可以將其更改爲using process.chdir('/path'),但是一旦關閉REPL會話並重新啓動,它將始終將process.cwd()重新實例化到啓動它的目錄。

如果要安裝一些包/依賴於節點PROJECT1,並認爲這些依賴也可以爲節點項目2有用,

  • 再次安裝它們的項目2(以獲得獨立node_modules目錄)
  • 全局安裝[使用-g標誌]。看到項目2 this
  • 參考包作爲 var referencedDependency = require('/home/User/project1/node_modules/<dependency>')

簡單地做process.chdir('/home/User/project1/node_modules/')在REPL和引用作爲 var referencedDependency = require('<dependency>')在JS文件不會工作

>process.chdir('/Users/MyUser/Desktop/Node/');僅更改該特定REPL會話的工作目錄。

希望它有幫助!

+0

如果我有15個聲望ID給你+1 ...哈哈謝謝你! –

+0

我很欣賞你的話,謝謝 – nalinc