在本地安装后,BrowserSync命令未找到

4

我为我的Node应用程序运行了以下命令:

$ npm install browser-sync --save-dev

安装成功了,browser-sync已经出现在我的package.json文件以及node_modules目录中。
但是,当我运行$ browser-sync --version来检查它是否工作时,我会得到以下错误:

bash: browser-sync: command not found

为什么不起作用呢? 注意:这个问题类似,但我不想像这个问题那样全局安装它。
非常感谢您的帮助!
3个回答

11
这是因为您正在尝试在本地使用通常全局安装的模块。全局安装的模块最终会出现在您的 PATH 环境变量中,这就是为什么您可以像您正在尝试的那样从终端运行它们的原因。
$ browser-sync --version
如果您想使用本地安装的 browser-sync 模块,则必须从您的 .bin 目录中添加完整路径到 browser-sync 二进制文件,因为所有本地安装的模块都放置在当前工作目录的 node_modules 目录中。即 Node 模块放在./node_modules,可执行文件放在./node_modules/.bin/。因此,要从本地安装运行 browser-sync 二进制文件,请执行以下操作:
./node_modules/.bin/browser-sync  --version

希望那能有所帮助!


1
谢谢,这帮助我解决了我的问题。从项目文件夹中运行"./node_modules/.bin/browser-sync --version"就可以解决问题了。 - Webalation

1
如果您使用npm --savenpm --save-dev安装了browser-sync,您可以通过在package.json中编写脚本来运行它。以下是我添加的脚本示例:
{
...
"scripts": {
    "dev-server": "browser-sync start --server 'public' --files 'public'"
  },
...
}

你可以像这样从项目的根目录运行脚本。
npm run dev-server

这将运行在你的脚本中设置为dev-server的任何命令。在这种情况下,它将为名为/public的文件夹中的应用/站点运行browser-sync,并监视/public文件夹中的任何文件更改。我知道这个问题有点旧,但没有得到答复,希望我能在未来节省别人的时间。

这对我有用!这个问题的答案真的很零散,所以我很高兴这个方法起作用了。唯一需要提到的是,我创建了一个名为public的文件夹,并将index.html和css文件夹放在其中。我不知道如果没有这个文件夹是否也能起作用,但除此之外,它非常好用。 - user70848
为了更加具体,我只将index.html文件放在public文件夹中,因为我有另一个监视/构建运行程序,它不喜欢我将CSS文件夹放在public文件夹中。 - user70848

0
其他答案仍然有效,但自从npm添加了npx命令以来,出现了一种新的方法:npx <package-name>

此命令允许您在类似于通过npm run运行它的上下文中运行来自npm包(本地安装或远程获取的包)的任意命令。

来源:https://docs.npmjs.com/cli/v8/commands/npx

在这种情况下,您将运行npx browser-sync

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接