Node.JS / Express应用程序中的Jade模板找不到外部Javascript文件?

罗伯特·奥施勒(Robert Oschler)

我有一个使用Jade模板引擎的Node.JS / Express应用程序。我的Javascript文件位于包含我的Jade视图的views目录上方的目录中。给定下面的代码,我认为该视图应该能够找到名为的 引用的服务器端Javascript文件common_routines,但是当请求该视图时,出现404错误,提示找不到外部Javascript文件。这让我感到困惑,因为我认为Jade模板执行服务器端,那么为什么这会触发404 errorJaderender()调用?

这是翡翠视图:

block content
    script(src="../common_routines.js")
    div(style="padding:5px")
        h4 #{product.name}
    if (product.brand != null)
        p Brand: #{product.brand}
    div(class="img_and_desc")
        img(src=product.imageUrl, class="product_image", align="left")
        if (product.minimumPrice == product.maximumPrice)
            p Price: #[strong #{product.minimumPrice}]
        else
            p Price: #[strong #{product.minimumPrice}] to #[strong #{product.maximumPrice}]
        if (product.cashBack > 0)
            p Cash Back amount: #[strong #{product.cashBack}]
        if (product.freeShipping)
            p(class="text-emphasized-1") *Free Shipping!
        if (product.onSale)
            p(class="text-emphasized-2") Discounted Item

这是渲染视图的路由文件中的调用的片段,在该视图if (err)中触发分支:

           res.render(
                'ajax-product-details',
                locals,
                function (err, html) {
                    if (err)
                    // A rendering error occurred.
                        throw new Error("Rendering error(type:" + err.type + ", message: " + err.message);
                    else {
                        // Success. Send back the rendered HTML.
                        res.send(html);
                        return;
                    }
                });

这是我在WebStorm调试器控制台窗口窗格中看到的错误。请注意,尽管在Jade文件引用中可以清楚地看到前面的“ ..”相对目录引用,但是它将文件引用显示为/common_routines.js, 而没有前面的“ ..”相对目录引用。("script(src="../common_routines.js")):

[Express][127.0.0.1][GET][DESKTOP] 2016-07-20T10:07:34.940Z /common_routines.js?_=1469009245957
(development error handler) Status code(404) message: Not Found

这是common_routines.js的内容:

function truncateString(str, maxLen)
{
    if (str.length > maxLen)
        return str.substring(0, maxLen - 1) + '&hellip';
    return str;
}

module.exports =
{
    truncateString: truncateString
}

就像我说的那样,common_routines.js位于Jade视图上方的目录中,因此出于某种原因,此外部文件引用无效吗?:

script(src="../common_routines.js")
莫希特·巴德瓦吉(Mohit Bhardwaj)

您只能public在前端引用文件夹中的静态文件(如果已将静态资产设置为从该文件夹提供)。您可以将common_routines.js文件放在公共目录下的文件夹中public/js/现在,您可以在视图文件中使用script(src="/js/common_routines.js")

如果您想在jade文件中使用这些功能,而不是在前端js文件中使用,则需要var commonRoutines = require('../common_routines.js');在服务器端js文件内部使用该功能作为一个软件包包括在内现在,您可以将此对象变量与上下文对象一起传递到视图文件。如前所述,在渲染时将locals对象传递给视图文件,您可以像这样进行操作:

var common_routines = require('../common_routines.js');
var locals = { common_routines: common_routines };
res.render( 'ajax-product-details', locals);

现在,你可以使用函数common_routines.jsajax-product-details文件中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

找不到JavaScript文件node.js

来自分类Dev

如何在node / mean / express应用程序中拆分index.js文件?

来自分类Dev

问题包括Node应用程序中的js文件

来自分类Dev

在Azure Node JS Web应用程序上找不到字体.woff 404

来自分类Dev

在node.js Web应用程序中引用自定义javascript文件

来自分类Dev

如何在node.js应用程序中包含JavaScript文件?

来自分类Dev

我如何在node.js应用程序中包含JavaScript文件?

来自分类Dev

如何在Node.js和Express.js应用程序中设置HttpOnly标志?

来自分类Dev

启动Node.js Express应用程序

来自分类Dev

Node.js Express应用程序生产部署

来自分类Dev

找不到Node.js

来自分类Dev

在Node.js中找不到模块

来自分类Dev

在Node.js中找不到模块

来自分类Dev

如何在Node JS应用程序中包含HTML电子邮件模板

来自分类Dev

ejs模板页面未反映expressjs(node.js)应用程序中的更改

来自分类Dev

ejs模板页面未反映expressjs(node.js)应用程序中的更改

来自分类Dev

我可以同时使用JavaScript和TypeScript开发Node.js(Express)应用程序吗?

来自分类Dev

Node.js Express JS-找不到模块

来自分类Dev

在Node.js应用程序中处理外部触发器

来自分类Dev

在Node.js应用程序中处理外部触发器

来自分类Dev

如何解决来自 Node.js 应用程序的外部 HTTP 请求中的错误

来自分类Dev

将数组从node.js / express传递到Jade模板

来自分类Dev

将数组从node.js / express传递到Jade模板

来自分类Dev

使用 .desktop 文件启动 node.js 应用程序

来自分类Dev

Node.js应用程序的firebase deploy命令导致错误:“ runtime”字段是必需字段,但在firebase.json中找不到

来自分类Dev

告诉Mongoose使用哪个数据库-在node.js Express应用程序中

来自分类Dev

Node.js / Express应用程序中的群集进程阻止

来自分类Dev

var app = express();的用途是什么?在创建Node.Js应用程序的过程中?

来自分类Dev

app..get()在Node.js Express应用程序中似乎不起作用

Related 相关文章

  1. 1

    找不到JavaScript文件node.js

  2. 2

    如何在node / mean / express应用程序中拆分index.js文件?

  3. 3

    问题包括Node应用程序中的js文件

  4. 4

    在Azure Node JS Web应用程序上找不到字体.woff 404

  5. 5

    在node.js Web应用程序中引用自定义javascript文件

  6. 6

    如何在node.js应用程序中包含JavaScript文件?

  7. 7

    我如何在node.js应用程序中包含JavaScript文件?

  8. 8

    如何在Node.js和Express.js应用程序中设置HttpOnly标志?

  9. 9

    启动Node.js Express应用程序

  10. 10

    Node.js Express应用程序生产部署

  11. 11

    找不到Node.js

  12. 12

    在Node.js中找不到模块

  13. 13

    在Node.js中找不到模块

  14. 14

    如何在Node JS应用程序中包含HTML电子邮件模板

  15. 15

    ejs模板页面未反映expressjs(node.js)应用程序中的更改

  16. 16

    ejs模板页面未反映expressjs(node.js)应用程序中的更改

  17. 17

    我可以同时使用JavaScript和TypeScript开发Node.js(Express)应用程序吗?

  18. 18

    Node.js Express JS-找不到模块

  19. 19

    在Node.js应用程序中处理外部触发器

  20. 20

    在Node.js应用程序中处理外部触发器

  21. 21

    如何解决来自 Node.js 应用程序的外部 HTTP 请求中的错误

  22. 22

    将数组从node.js / express传递到Jade模板

  23. 23

    将数组从node.js / express传递到Jade模板

  24. 24

    使用 .desktop 文件启动 node.js 应用程序

  25. 25

    Node.js应用程序的firebase deploy命令导致错误:“ runtime”字段是必需字段,但在firebase.json中找不到

  26. 26

    告诉Mongoose使用哪个数据库-在node.js Express应用程序中

  27. 27

    Node.js / Express应用程序中的群集进程阻止

  28. 28

    var app = express();的用途是什么?在创建Node.Js应用程序的过程中?

  29. 29

    app..get()在Node.js Express应用程序中似乎不起作用

热门标签

归档