我正在Laravel建立我的第一个项目并尝试使用Elixir,在Windows 8.1上使用宅基地。我已经找到了太长路径名称的已知npm / vagrant问题: https://harvsworld.com/2015/how-to-fix-npm-install-errors-on-vagrant-on-windows-because-the-paths-are-too-long/
所以我在那篇文章中推荐了一行编辑(感谢上帝为那个人),然后运行(有和没有sudo): npm install --no-bin-links
它让我前进,所以现在我得到两种不同的错误:一些'缺少写入权限'错误,以及一堆" EACCES"错误:
错误输出给了我清道夫狩猎的下一个线索(我认为): 请尝试以root / Administrator
再次运行此命令这让我感到this post,但对我而言,即使我使用sudo(或更新我的用户权限)之后也没有任何变化:
sudo chown -R $ USER / usr / local
sudo chown -R $(whoami)〜/ .npm
更新:然后在下面的建议之后我得到EPROTO和EXTXTBSY错误(甚至在按照提示建议重命名npm-debug.log后:
所以我试着运行gulp来看看它是否会给我提供线索,并且错误输出让我这样做:
sudo npm rebuild node-sass
运行它会给我相同的EPROTO和ETXTBSY错误,npm-debug.log文件显示: 错误EPROTO:协议错误,符号链接' ../ node-sass / bin / node-sass' - > ' /home/vagrant/Code/Family-laravel/node_modules/laravel-elixir/node_modules/gulp-sass/node_modules/.bin/node-sass'
然后在处理了一些其他的东西一小时后,我又回来了新的并重新执行这些步骤,这次减少错误:
sudo npm -g install npm @ latest(fine)
sudo npm install --no-bin-links(只是ETXTBSY错误和插件中的错误'运行序列',在任务' sass')
sudo npm rebuild node-sass --no-bin-links(没有错误!)
gulp(只有一个错误:未找到:notify-send)
越来越近了!
答案 0 :(得分:41)
我一直试图找出这个问题好几个星期。以下是我在不使用主机环境的情况下完成的工作:
我根据nodesource.com将节点更新到宅基地的最新版本:
<form action="contact_script.php" method="post">
Name<br>
<input type="text" name="cf_name"><br>
Telephone<br>
<input type="text" name="cf_telephone"><br>
E-mail<br>
<input type="text" name="cf_email"><br>
Enquiry<br>
<textarea name="cf_message"></textarea><br>
<input type="submit" value="Send">
<input type="reset" value="Clear">
</form>
我将npm更新为宅基地的最新版本。这应该在更新节点后完成:
<?php
$field_name = $_POST['cf_name'];
$field_telephone = $_POST['cf_telephone'];
$field_email = $_POST['cf_email'];
$field_message = $_POST['cf_message'];
$mail_to = 'myemail@mail.com';
$subject = 'Message from a site visitor '.$field_name;
$body_message = 'From: '.$field_name."\n";
$body_message = 'Contact Number: '.$field_telephone."\n";
$body_message .= 'E-mail: '.$field_email."\n";
$body_message .= 'Message: '.$field_message;
$headers = 'From: '.$field_email."\r\n";
$headers .= 'Reply-To: '.$field_email."\r\n";
$mail_status = mail($mail_to, $subject, $body_message);
if ($mail_status) { ?>
<script language="javascript" type="text/javascript">
alert('Thank you for the message. We will contact you shortly.');
window.location = 'home.php';
</script>
<?php
}
else { ?>
<script language="javascript" type="text/javascript">
alert('Message failed. Please, send an email to info@mail.com');
window.location = 'home.php';
</script>
<?php
}
?>
我在laravel项目目录中运行了npm install。我还必须使用force来获取所有依赖项:
sudo apt-get install --yes nodejs
curl --silent --location https://deb.nodesource.com/setup_4.x | sudo bash -
我根据gulp错误重建了node-sass:
sudo npm -g install npm@latest
在整个过程中如果出现故障或每次安装后,我都会使用:
sudo npm install --no-bin-links
sudo npm cache clear
sudo npm install --force --no-bin-links
我的主机是Windows 10,最新的虚拟盒,最新的流浪汉,最新的家园。我使用git bash作为管理员,使用git bash使用ssh进入vagrant。
到目前为止,我只测试并确认了我的gulp有效。可能需要重建其他依赖项。
希望这有帮助!
答案 1 :(得分:1)
最初的EACCES
错误的原因是您使用sudo
而不使用-H
选项。切勿使用sudo npm
。始终使用sudo -H npm
。
Internet上的说明(包括NPM文档)完全是错误的。
答案 2 :(得分:0)
许多人还使用 Virtual Box ...
设置Homestead在寻找解决方案之后,我决定参考 Laravel Homestead 文档。幸运的是,解决方案已发布在此处:
https://laravel.com/docs/5.8/homestead#provider-specific-settings
您只需将以下内容添加到您的宅基地 Vagrantfile 。
dataset
重要
请不要忘记将自己设置为管理员。
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
(...)
config.vm.provider "virtualbox" do |v|
v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
end
(...)
end
答案 3 :(得分:0)
我使用以下描述的解决方案解决了我的问题:https://www.prolificinteractive.com/2015/01/21/getting-vagrant-nodejs-windows-play-well-together/
主要技巧是:
vb.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/path/to/guest/shared/directory", "1"]
希望它对某人有帮助
答案 4 :(得分:0)
我有同样的问题。我在下面做了。工作正常。
npm install --no-bin-links
答案 5 :(得分:0)
这是我解决VirtualBox上类似问题的方法:
# My Virtualbox image name "centos"
# My shared folder name: localdev
# My mounted directory name on virtualbox: /data
VBoxManage setextradata "centos" VBoxInternal2/SharedFoldersEnableSymlinksCreate/data 1
VBoxManage setextradata "centos" VBoxInternal2/SharedFoldersEnableSymlinksCreate/localdev 1
## see above how i added image name with quotes + my folder names before 1
# I made sure I am running VirtualBox in Administrator Mode
# Boot up the VM and install this:
yum install yarn
# navigate to your code folder and run:
yarn install