我對Node非常陌生,並且試圖讓我的腦袋圍繞着應用的基礎。我很好奇,爲什麼這兩個命令:npm start和node app.js
節點app.js
--vs--
NPM啓動
輸出同樣的事情到控制檯,並似乎繼續「聆聽」,但爲什麼當我嘗試訪問http://localhost:3000我只有在運行第一個命令時纔得到404。
我看到Express 4似乎有不同的應用程序結構,但爲什麼它成功偵聽而另一個不成功,儘管控制檯中有相同的行爲?
任何解釋都很有幫助。謝謝!
我對Node非常陌生,並且試圖讓我的腦袋圍繞着應用的基礎。我很好奇,爲什麼這兩個命令:npm start和node app.js
節點app.js
--vs--
NPM啓動
輸出同樣的事情到控制檯,並似乎繼續「聆聽」,但爲什麼當我嘗試訪問http://localhost:3000我只有在運行第一個命令時纔得到404。
我看到Express 4似乎有不同的應用程序結構,但爲什麼它成功偵聽而另一個不成功,儘管控制檯中有相同的行爲?
任何解釋都很有幫助。謝謝!
這兩個命令不一定相同。 npm start
運行'start'腳本配置按照'package.json'中的定義運行,node app.js
在'node'中執行'app.js'文件。有關更多信息,請參見http://browsenpm.org/package.json。所以,如果你有以下package.json,那麼這些命令是完全不同的。
{
"name": "my cool node project",
....
"scripts": {
"start": "node index.js"
}
....
}
下面的package.json是你想使它們相同。
{
"name": "my cool node project",
....
"scripts": {
"start": "node app.js"
}
....
}
我想通過檢查什麼「開始」腳本設置爲運行,並嘗試直接在命令行而不是通過NPM運行相同的命令,看看那裏的區別是開始。
,但爲什麼它是一個成功的監聽和其他沒有
如果服務器返回一個404,這將意味着服務器正在偵聽,但無論是文檔根目錄或訪問權限AREN沒有正確設置,因此它返回了「文件未找到」響應。
知道什麼,你說得對。我終於明白了,我有點迷失方向,因爲我來自FE自動化界的太多使用咕嚕聲。 基本上,./bin/www文件現在是服務器的引導程序,而舊版本的Express不是這種情況。謝謝你幫助我理解。 基本上我明白,app.js並沒有完全引導應用程序,但它做的事情就像mongodb連接,這就是爲什麼我看到我的控制檯日誌。新的表達規範使用./bin/www來執行所有引導(我喜歡它;它看起來更清晰)。 +1謝謝! – dudewad
'npm start'查看package.json中的'start'腳本。它可能與app.js不同。試着看看package.json。 – hassansin
你可以發佈你的app.js和你的package.json的相關部分嗎? –
[相關鏈接](https://docs.npmjs.com/misc/scripts) –