簡體   English   中英

在Node應用程序中加載腳本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM