- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 Laradock 创建了一个 Laravel 项目。当我运行 npm install 时,我得到以下输出。
> node-sass@4.9.0 install /var/www/npmtest/node_modules/node-sass
> node scripts/install.js
fs.js:119
throw err;
^
Error: EINVAL: invalid argument, open '/var/www/npmtest/node_modules/node-sass/package.json'
at Object.openSync (fs.js:443:3)
at Object.readFileSync (fs.js:348:35)
at Object.Module._extensions..json (internal/modules/cjs/loader.js:719:20)
at Module.load (internal/modules/cjs/loader.js:612:32)
at tryModuleLoad (internal/modules/cjs/loader.js:551:12)
at Function.Module._load (internal/modules/cjs/loader.js:543:3)
at Module.require (internal/modules/cjs/loader.js:650:17)
at require (internal/modules/cjs/helpers.js:20:18)
at Object.<anonymous> (/var/www/npmtest/node_modules/node-sass/lib/extensions.js:7:9)
at Module._compile (internal/modules/cjs/loader.js:702:30)
npm WARN rollback Rolling back is-fullwidth-code-point@1.0.0 failed (this is probably harmless): ENOTEMPTY: directory not empty, rmdir '/var/www/npmtest/node_modules/gauge/node_modules/is-fullwidth-code-point'
npm WARN rollback Rolling back is-fullwidth-code-point@1.0.0 failed (this is probably harmless): ENOTEMPTY: directory not empty, rmdir '/var/www/npmtest/node_modules/sass-graph/node_modules/is-fullwidth-code-point'
npm WARN rollback Rolling back chalk@1.1.3 failed (this is probably harmless): ENOTEMPTY: directory not empty, rmdir '/var/www/npmtest/node_modules/node-sass/node_modules/chalk'
npm WARN rollback Rolling back string-width@1.0.2 failed (this is probably harmless): ENOTEMPTY: directory not empty, rmdir '/var/www/npmtest/node_modules/gauge/node_modules/string-width'
npm WARN rollback Rolling back chalk@1.1.3 failed (this is probably harmless): ENOTEMPTY: directory not empty, rmdir '/var/www/npmtest/node_modules/har-validator/node_modules/chalk'
npm WARN rollback Rolling back assert-plus@1.0.0 failed (this is probably
...............
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.4 (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.4: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! node-sass@4.9.0 install: `node scripts/install.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the node-sass@4.9.0 install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2018-06-22T04_51_41_566Z-debug.log
基本上它无法运行 npm install 命令。如果我在 docker 之外创建 Laravel 项目,它会完美运行。有谁知道这是为什么吗?
最佳答案
我也遇到了这个问题。我不知道这个问题是什么时候引入的,因为我相信我以前可以在这个项目上运行 npm install
,但我总是有可能使用 yarn install
相反(这似乎有效)。
但是,我们正在尝试使用 npm,所以我需要让它正常工作。
docker for windows github repo 上有与此相关的问题.看来问题是使用 CIFS 3.02 而不是 CIFS 2.0 安装卷时。 Laradock 正在为卷使用绑定(bind)安装,看起来它们默认为 3.02。
我不是 docker 专家,所以可能有更好的方法来解决这个问题,但我能够弄清楚如何更新 docker-compose.yml
以使用创建卷CIFS 2.0,它为我解决了这个问题。
在 volumes:
部分下,添加一个新卷。您可以将其命名为任何名称,但现有定义的卷之一除外。我调用了我的 code
。
Laradock 版本 >= 7.0.0:docker-compose.yml
文件使用版本 3 和顶级 volumes:
部分在文件顶部附近定义。
Laradock 版本 <7:docker-compose.yml
文件使用版本 2,顶级 volumes:
部分定义在文件底部。
不幸的是,由于此卷定义在构建上下文之外,因此您需要对代码路径进行硬编码;您将无法使用 APP_CODE_PATH_HOST
变量(或 <7 中的 APPLICATION
)。
您的 volumes:
部分将如下所示:
volumes:
mysql:
driver: ${VOLUMES_DRIVER} (or "local")
percona:
driver: ${VOLUMES_DRIVER} (or "local")
[other volumes removed for brevity...]
code:
driver: "local"
driver_opts:
type: cifs
device: //10.0.75.1/C/path/to/your/code/
o: "rw,relatime,vers=2.0,sec=ntlmsspi,cache=strict,username=[your user name],password=[your password],domain=[your domain, if any; otherwise remove this],uid=0,noforceuid,gid=0,noforcegid,addr=10.0.75.1,file_mode=0755,dir_mode=0755,iocharset=utf8,nounix,serverino,mapposix,nobrl,mfsymlinks,noperm,rsize=1048576,wsize=1048576,echo_interval=60,actimeo=1"
您需要使用您的代码路径更新 device:
选项,并且您需要更新 o:
选项以填写您的用户名、密码和域。随意在您的 .env
文件中创建变量并在此处使用它们。
定义新卷后,您需要更新 workspace
服务以使用新卷。
Laradock 版本 >= 7.0.0:在您的 workspace
服务的 volumes:
部分,替换 ${APP_CODE_PATH_HOST}
与您的新卷的名称(例如 code
)。您的 workspace
卷定义如下所示:
volumes:
- code:${APP_CODE_PATH_CONTAINER}
Laradock 版本 < 7:在 volumes:
部分为您的 applications
服务,替换 ${APPLICATION}
使用新卷的名称(例如 code
)。如果您的 applications
服务没有 volumes:
部分,请添加它。您的 applications
部分定义将如下所示:
applications:
image: tianon/true
volumes:
- code:/var/www
现在,当您启动容器并登录到您的 workspace
容器时,您的卷应该使用 CIFS 2.0 安装。您可以通过运行 mount | 来验证grep cifs
并看到它在选项中显示 vers=2.0
。
node-sass
的安装脚本现在应该可以找到 package.json 文件了。假设您没有遇到任何其他错误,npm install
应该可以正常工作。
关于laravel - npm 安装在 laradock 上不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50981002/
我已经安装了 composer,但是查看 Laravel 文档,我正在努力解决: “确保将 ~/.composer/vendor/bin 目录放在您的 PATH 中,以便在您的终端中运行 larave
我想在迁移时插入外键而不是在 1 中添加外键值 `public function up() { Schema::table('users', function (Bluepri
这是一个open bug on Github对于 laravel-mongodb 包,但没有任何反应。也许有人知道解决方案..? 选择作为单个文档时,日期显示为日期 { "_id": "5ca
我有一个 Laravel 应用程序,我将其用作 Joomla 中构建的更大应用程序的 API。我真的很喜欢使用 Laravel,并决定在 Joomla 应用程序中使用 Eloquent。我通过在 La
我有两个 Laravel 应用程序使用相同的数据库,因此具有相同的用户和密码。 假设应用程序称为 A 和 B。 如果用户登录 A,我该怎么做才能让他们自动登录 B?因此,如果他们登录到 A,那么当他们
我正在 github 上查看 Laravel 的源代码并注意到有一个 laravel/laravel和一个 laravel/framework .它们都链接到 Laravel 网站上的相同文档,并声明
我正在尝试将 laravel 从 5.4 版本更新到 5.5。我已经按照 Laravel 指南的指示完成了所有操作: https://laravel.com/docs/master/upgrade 当
我尝试从 foreach 向每个用户添加一些新值,但因为我使用 get,现在我不能在响应中使用分页,但我还需要向每个用户添加这些值。有什么想法吗? public function statistics
我有一个链接到销毁按钮的删除链接 $task->id ,'method'=>'DELETE'] ) }}"> delete 这是销毁函数 public function destroy($i
我想在 Laravel 中上传一组文件,但我不确定文件的路径和存储对象。八现在数据已存储,但在我的情况下路径是#。在下图中,我有从前面发送的数据(Vuejs 和我正在使用 vue-upload-com
在使用三向数据透视表时,我很难在 Laravel 中进行预加载。数据库设置如下: +-------+--------+-------+-------------+ | deals | venues |
我一直在从事 laravel 5.7 博客项目。我想评论一篇文章。 我需要实现这个: 登录前,我可以在评论文本区输入任何内容 我提交评论(当然会被auth中间件拦截) 然后我被重定向到登录页面 登录后
我正在尝试为我的应用程序中的文件创建一个临时 URL。我能够将文件上传到 S3 存储桶,并且能够使用方法 \Storage::temporaryUrl($this->url, now()->addHo
如果将 Eloquent 模型作为输入传递给 Laravel 排队作业,但模型在作业在队列中运行之前被删除,会发生什么情况? 例如,我正在使用 Laravel 5.2 构建一个电子商务网站,客户可以在
我正在尝试运行在测试运行之前将数据输入数据库的单元测试。我已经定义了一个设置方法,它为每个我不想要的测试用例运行。设置方法执行良好,没有问题。我想要的是将数据输入数据库一次,然后由所有测试用例使用。所
美好的一天。例如,我有一个带有字段/属性的模型 People: name surname 而且模型也有这个方法: public function FullName() { return "{$
我无法理解 Laravel 存在验证在检查数据库中现有记录方面的工作原理。 例如 带有 user.id = 1 的 POST 请求 是否可以使用验证规则:'id' => 'exists:users'检
我正在使用Laravel 5.2创建站点 我想做的是 INSERT同时3行 新的3行必须包含时间戳created_at updated_at。 使用Query Builder方法insert,是的,它
我试图通过href Action 将一些数据传递给我的 Controller 。我不知道为什么,但是laravel使用 GET 方法传递数据,但是我需要一个 POST 来代替 GET 。我真的不明白为
我有一个问题,我的存储文件夹上的服务器前提每 2 天重置一次。所以我运行这些命令并得到修复: sudo chown -R $USER:www-data storage sudo chown -R $U
我是一名优秀的程序员,十分优秀!