[英]Loading scripts in a Node app
這是我的文件夾結構:
- getable_challenge
- node_modules
- stuff
- main.html
- main.js
- backend.js
- README.md
我想從main.html
加載main.js
以前,我一直使用file:///Users/adamzerner/code/getable_challenge/main.html
的URL訪問該頁面,並且簡單的<script src="main.js"></script>
允許我加載腳本。
但是隨后我在localhost:3000
設置了一個節點服務器,現在它不會加載腳本。 它正在嘗試加載localhost:3000/main.js
,這大概是錯誤的路徑。 我不確定該如何組織...該怎么辦?
服務器代碼(本質上)
var express = require('express');
var app = express();
app.listen(3000);
當您使用甚至不使用Web應用程序提供腳本的“文件”協議時,您將直接在本地文件系統上訪問它。 當您僅在本地計算機上運行應用程序時,這種方法就可以正常工作,但是當您嘗試將其作為真實應用程序運行時,它會完全中斷,因為瀏覽器不知道“ file:/// ...”的位置,甚至有權訪問它。
您需要將客戶端腳本放入通常稱為“ public”的單獨目錄中,然后使您的應用程序意識到這一點。 如果您使用快遞,則可以這樣做:
app.use(express.static(__dirname + '/public'));
您希望將靜態提供的腳本(“公共”)放在單獨的目錄中,以控制客戶端的訪問。 如果僅將它們放在主目錄中並使主目錄可訪問,則可以將所有其他文件公開顯示,例如有時包含密碼的配置文件。
它還使您的結構更清潔。
嘗試在var app
之后添加此行
app.use(express.static(__dirname));
這應該可以訪問服務器文件夾中的資源。 var __dirname
是執行服務器的路徑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.