【问题标题】:How to use npm link to start a package with an express server?如何使用 npm 链接启动带有 express 服务器的包?
【发布时间】:2018-11-05 16:53:54
【问题描述】:

我目前正在开发一个 NPM 包,它启动一个用于托管图像的快速服务器。这存在于 Laravel 项目的目录中。

目前这还在开发中,我想把它开发成一个可发布的模块,所以我在我的 Laravel 项目中为这个包添加了一个 .gitignore。

在我的 NPM 包中,我运行 npm link,在我的 Laravel 项目中,我运行 npm link imageserverimageserver 是我的包的名称。这确保我可以开发我的包,而不必经常使用 NPM 发布和引入新的更改。

我现在可以在我的 JavaScript 中使用 require() 语句来请求包,但我只是想通过 npm 脚本运行这个包的快速服务器。

imageserver 包中,我设置了一个 package.json,其中包含:

"scripts": {
  "start": "nodemon app.js"
}

如何在我已链接的包上调用npm run start 脚本?

在我的 Laravel 项目中,我只想像这样启动我的链接服务器包:

"scripts": {
    "start": "imageserver"
}

但在这种情况下,我得到:

图像服务器:未找到

通常,如果 NPM 脚本安装在您的 node_modules 目录中,您可以正常运行包。这不是链接包的情况吗?

编辑

我已将bin 属性添加到我的package.json 文件以使其可执行并将其添加到我的全局路径中。至少这样我可以从我的 NPM 脚本中调用imageserver 并且它可以工作。现在我得到了权限错误:

//: Permission denied
/home/workstation/.nvm/versions/node/v10.1.0/bin/imageserver: 2: /home/workstation/.nvm/versions/node/v10.1.0/bin/imageserver: global.__base: not found
/home/workstation/.nvm/versions/node/v10.1.0/bin/imageserver: 4: /home/workstation/.nvm/versions/node/v10.1.0/bin/imageserver: //: Permission denied
/home/workstation/.nvm/versions/node/v10.1.0/bin/imageserver: 5: /home/workstation/.nvm/versions/node/v10.1.0/bin/imageserver: Syntax error: "(" unexpected

【问题讨论】:

    标签: node.js npm node-modules npm-scripts


    【解决方案1】:

    我已经在我的 imageserver 包中创建了我的主 JavaScript 文件并添加了一个 shebang:

    在我的目录中。

    chmod +x filename.sh
    

    在我的文件中。

    #!/usr/bin/env node
    

    我的package.json imageserver 包现在有这个:

    "bin": "app.js",
    

    当我运行npm link 时,它会将imageserver 作为可执行文件添加到我的路径中,我可以将它作为第三方包从需要它的项目的scripts 部分执行。

    它现在可以工作了,它目前不再受 nodemon 控制,我只需要弄清楚如何让它再次工作。

    【讨论】:

      猜你喜欢
      • 2014-06-22
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 2012-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多