node_modules 中 ExpressJS 的脚本路径
Posted
技术标签:
【中文标题】node_modules 中 ExpressJS 的脚本路径【英文标题】:Script path for ExpressJS in node_modules 【发布时间】: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
的文件的正确路径吗?
【参考方案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 ***.com/questions/27464168/… 我希望看到最后一个命令的扩展,例如,如果我只想包含某些 node_modules 文件而不包含其他文件。以上是关于node_modules 中 ExpressJS 的脚本路径的主要内容,如果未能解决你的问题,请参考以下文章
如何在 expressjs 4.0 中设置 marko 模板引擎
我可以将 npm node_modules 目录放在我的“webroot”之外吗