一尘不染

node_modules中ExpressJS的脚本路径

node.js

我的“视图”文件夹中有一个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')

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

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

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

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

谢谢!


阅读 402

收藏
2020-07-07

共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')));
2020-07-07