首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >全局安装的npm-包未运行

全局安装的npm-包未运行
EN

Stack Overflow用户
提问于 2019-07-13 07:44:42
回答 1查看 103关注 0票数 0

我刚刚在npm中发布了一个新的软件包,它没有像预期的那样运行。

运行全局“扑克赔率-计算”将产生以下错误:

/c/Users/username/AppData/Roaming/npm/poker-odds-calc:第1行: /node_modules/poker-odds-calc/dist/lib/bin/poker-odds-calc.js:没有这样的文件或目录

应用数据\漫游\npm\扑克-赔率-calc "$basedir/node_modules/poker-odds-calc/dist/lib/bin/poker-odds-calc.js“"$@”退出$?

以上内容是为什么模块不作为全局模块运行的原因,但我不知道如何强制npm将正确的内容添加到这个文件中。

代码语言:javascript
复制
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")

case `uname` in
    *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac

if [ -x "$basedir/node" ]; then
  "$basedir/node"  "$basedir/node_modules/poker-odds-calculator/dist/bin/poker-odds-calculator.js" "$@"
  ret=$?
else 
  node  "$basedir/node_modules/poker-odds-calculator/dist/bin/poker-odds-calculator.js" "$@"
  ret=$?
fi
exit $ret
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-13 09:34:23

您缺少了命令行脚本中的shebang字符序列。因此,NPM无法正确安装二进制文件。

溶液

您需要在类型记录命令行源(/src/lib/bin/扑克-赔率-calc.ts)的顶部添加一个shebang字符序列。换句话说,文件的顶部需要如下所示:

代码语言:javascript
复制
#!/usr/bin/env node
import * as argv from "argv";
import Table from "../Table";
import {CardsFromString, Log} from "../Utils";

在安装包时,NPM将查找Package.json的"bin“配置中定义的每个文件中的第一行,并相应地在操作系统中执行操作。在Windows中,NPM根据在顶部定义的内容创建不同类型的二进制文件。如果存在节点shebang,则NPM将创建一个二进制文件,尝试使用节点执行命令行脚本(类似于上面所希望的内容)。如果省略了shebang,NPM就会创建一个代理二进制文件,将责任外包给Windows (正如您已经看到的,很可能会失败)。

参考

https://medium.com/netscape/a-guide-to-create-a-nodejs-command-line-package-c2166ad0452e

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57017171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档