Jquery无法从本地磁盘工作

时间:2018-01-31 04:47:21

标签: javascript jquery node.js

描述 Jquery不能从本地磁盘工作 - 使用任何jquery版本的下载副本都无法正常工作。 它可以通过互联网上的ref链接正常工作。

每个jquery文档 - 它也可以从本地磁盘工作 (即脚本src ="本地路径" ...)。 我的代码工作正常,引用外部链接到jquery lib(版本2.2.4,3.2.1)没问题

每当我尝试回退或只是将本地下载的文件用于同一版本时,它就会失败!

相关代码是

<script src async = './jquery-3.2.1.min.js'></script>  
or just
<script src = './jquery-2.2.4.min.js'></script>  

我尝试了几个其他的workarrounds,包括将整个文件粘贴到我的html脚本中)没有在chrome和firefox windows 7-8 node-8.9.1上都没有工作 尝试类似于以下内容:

<script>window.jQuery || document.write('<script src="jquery-2.2.4.min.js"><\/script>')</script>

错误信息是:

detailed error: ReferenceError: $ is not defined
detailed error: TypeError: pageExecute is undefined

一个建议的解决方案是:使用dev服务器。 什么是开发服务器以及为什么需要?意味着什么?所以我不能只使用jquery lib的本地副本?

2 个答案:

答案 0 :(得分:1)

node.js默认不提供任何文件(与其他一些Web服务器不同)。因此,如果您希望jQuery文件由您自己的Web服务器提供,那么您需要创建一个提供该文件的路由,或者使用提供多个文件的express.static()之类的文件。

由于您的网址为http://localhost:6060/example1,因此您通过自己的网络服务器加载网页。因此任何脚本标记如:

<script src="jquery-2.2.4.min.js"></script>

将从您自己的网络服务器请求:

http://localhost:6060/jquery-2.2.4.min.js

如果您没有在node.js服务器中为该特定网址定义路由,则会出现错误。如果您在node.js服务器中使用Express,则需要以下内容:

app.use(express.static("/someDirPath"));

创建一个中间件处理程序,它将自动在/someDirPath中查找请求的文件。或者,您需要为要提供的文件制作特定路线:

app.get("/jquery-2.2.4.min.js", function(req, res) {
    res.sendFile("/somePath/jquery-2.2.4.min.js");
});

在我的设计项目中,我对静态文件和动态路由进行了URL区分。我在任何公共资源的URL路径的开头使用/public,因为这样可以很容易地区分哪个请求用于静态资源,哪个请求用于动态服务的路由。因此,在我的脚本文件中,我使用:

<script src="/public/js/jquery-2.2.4.min.js"></script>

然后,在我的服务器上,我会使用:

// serve static resources from the public directory below our project
app.use(express.static("/public", path.join(__dirname, public)));

然后,我有一个公共静态文件的目录结构:

myAppDir
   various server files
   - public
        - js
        - css
        - img

答案 1 :(得分:0)

文件路径问题
如果同一文件夹中的js和html文件都使用:

<script type="text/javascript" src="jquery-2.2.4.min.js"></script>