【问题标题】:Script path for ExpressJS in node_modulesnode_modules 中 ExpressJS 的脚本路径
【发布时间】:2014-08-15 08:24:01
【问题描述】:

我的“views”文件夹中有一个 index.jade。

doctype html
html
  head
    title= title
    link(rel='stylesheet', href='/stylesheets/main.css')
    script(src='../node_modules/some_package/package_script.min.js')

我的路由文件夹中有 index.js 和路由器:

router.get('/', function(req, res) {
  res.render('index', { title: 'title goes here' })
});

当我尝试访问控制台中的翡翠文件中的 node_modules 文件夹时,我不断收到 404 错误: GET /node_modules/some_package/package_script.min.js 404 1ms - 19b

文件路径究竟是如何工作的/当我尝试访问 node_modules 中的脚本时,如何为 Express 修复它?我是否需要复制必要的 javascript 文件并将它们放在“public”下的“javascripts”文件夹下才能正常工作?

谢谢!

【问题讨论】:

  • 你确定这是相对于index.jade的文件的正确路径吗?

标签: node.js express


【解决方案1】:

哇!等等……node_modules 是一个私有目录,不应该暴露。默认情况下,public 目录是静态文件的公共根路径:

app.use(express.static(path.join(__dirname, 'public')));

里面有一个javascripts 目录。将您的脚本复制到那里并将模板中的src 属性更改为:

/javascripts/package_script.min.js

如果您真的想提供node_modules,这不是一个好主意,请在上面的app.use(express.static(...)); 行下方添加以下内容:

app.use(express.static(path.join(__dirname, 'node_modules')));

【讨论】:

  • 出色的答案。有种直觉有什么不对劲。感谢您澄清 node_modules 是一个私有目录,这是一个很大的禁忌! No-no information
  • 如果这个答案可以触及如何让 bootstrap-sass node_modules 文件干净地用于 gulp,那就太好了,即我不太愿意将一次性复制编程到 gulp 任务中以复制文件到 src 文件夹中,因此可以在每次重新编译时通过 gulp 任务获取它们,我认为我不应该习惯于手动从 node_modules 中复制文件,所以我怎样才能避免简单地为中间人使用 bower?手动将它们复制到 src/ 或者是否有更好的 gulp 方式来访问 node_modules,或者哪些 api 调用可以通过 gulp 用于 bootstrap-sass?
  • 相关帖子,现在似乎每个人都在使用 gulp 中的 node_modules stackoverflow.com/questions/27464168/…
  • 我希望看到最后一个命令的扩展,例如,如果我只想包含某些 node_modules 文件而不包含其他文件。
猜你喜欢
  • 2019-02-10
  • 1970-01-01
  • 2018-05-23
  • 2014-12-05
  • 2015-10-07
  • 2013-08-21
  • 2011-07-15
  • 2013-02-02
相关资源
最近更新 更多