【问题标题】:Creating a global npm package创建全局 npm 包
【发布时间】:2015-08-28 07:47:33
【问题描述】:

我发现这篇关于创建全局包的文章:https://bretkikehara.wordpress.com/2013/05/02/nodejs-creating-your-first-global-module/

所以我在package.json 中声明了一个 bin 值,如下所示:

"bin": {
    "my-server": "./bin/start-server.js"
  }

start-server.js 中,我引用了../server.js,这是我用来启动我的快速服务器的。在我的项目文件夹中执行npm install -g 并运行my-server 后它工作得很好,但是当我导航出项目文件夹并运行my-server 时,服务器似乎启动了,但我的样式表或客户端都没有javascript 包含正在显示。

在我的server.js 文件中,我这样定义这些路径:

app.set('views', path.join(__dirname, '/public'));
app.set('view engine', 'ejs');
app.use(express.static('public'));

我应该以不同的方式进行设置,以便无论有人从哪里调用my-server,它都有正确的样式表路径?

【问题讨论】:

  • 您是否尝试过使用__dirname + "/../server.js"?看来您的代码取决于 pwd 作为模块的目录。
  • 你的意思是在start-server.js里面吗?如果是这样,那是行不通的。
  • 你试过 fs.readFile 了吗?

标签: node.js express npm


【解决方案1】:

我想出了这个问题的答案。在我的server.js 文件中,我必须将__dirname 添加到express.static() 表达式中。所以这就是它的样子:

app.use(express.static(__dirname + '/public'));

这使它工作得很好,所以我可以在完成npm install -g之后从任何地方呼叫my-server

【讨论】:

    猜你喜欢
    • 2022-01-25
    • 2021-05-19
    • 2021-11-11
    • 2017-11-05
    • 2020-10-23
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多