我有一个laravel项目,我需要使用laravel混合构建样式和脚本,但测试服务器(Ubuntu 20.04.4(没有全局安装节点。Node和npm在系统中的不同文件夹中,所以我运行这样的命令:
/path/to/node /path/to/npm install
/path/to/node /path/to/npm run dev
但是当我运行npm run dev
(这个命令运行laravel-mix-build(时,我看到了错误:
> mazer@2.0.0 dev
> mix
/usr/bin/env: ‘node’: No such file or directory
在package.json中,它看起来像这样:
"scripts": {
"dev": "mix"
...
}
我检查了laravel-mix包(在node_modules中(,发现它是:#!/usr/bin/env node
。包检查该文件中的节点var,但没有节点var。
我不需要更改env文件,那么我如何更改此路径或设置临时系统var?有什么方法可以模拟变量在那里吗?
我有一个解决这个问题的方法。
有关命名拼写错误或路径符号链接的问题。
因此,您需要使用以下命令链接nodejs的符号链接
ln -s /usr/bin/nodejs /usr/bin/node
或
sudo ln -s /usr/bin/nodejs /usr/bin/node
我用Docker解决了问题,所以现在我在git-push上运行这个命令:docker run --rm -v /path/to/project:/var/www/html node:16.16.0-alpine npm run dev --prefix /var/www/html
也许它对某人有用。
UPD
我找到了另一种解决方法,我错误地使用了PATH,因此它不起作用:
错误
我设置了node和npm的路径,然后将其添加到PATH中,如下所示:
NODE_PATH="/path/to/node_folder/node"
NPM_PATH="/path/to/node_folder/npm"
PATH="${NODE_PATH}:${NPM_PATH}:$PATH"
而且系统无论如何都找不到npm和node。
正确的方式
将/path/to/node_folders
(节点和npm在其中(添加到PATH:
NODE_DIR="/path/to/node_folder"
PATH="${NODE_DIR}:$PATH"
然后,我可以只运行npm install
和npm run dev
,而不需要它们的完整路径。