无法使用" npm run watch"编译sass。 - Laravel

时间:2018-01-27 20:17:15

标签: php node.js laravel npm node-modules

确定。我通过udemy参加了Laravel的课程,所有的造型都是在sass中完成的。我按照与教练相同的步骤,但我得到了错误,而他的工作正常。有人可以请帮助。我在Windows上,他在MAC

我使用composer安装了Laravel,然后迁移了我的数据库表。

接下来我们要做的是使用

安装节点和东西
  

npm install

这就是问题所在。我没有获得节点模块文件夹,而他做到了。要获取节点模块文件夹,我需要运行

  

npm install node-laravel   但文件夹包含不同的内容。

在我将sass文件夹添加到laravel中之后,为了编译它们,他运行了

  

npm run watch

SASS完美地为他编译,而我收到了这个错误

    > @ watch C:\Users\andre\Dropbox\Code\Personal\CodingPhase\PHP-7\DesignSt
orm
> cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --wa
tch --progress --hide-modules --config=node_modules/laravel-mix/setup/web
pack.config.js

The system cannot find the path specified.
events.js:183
      throw er; // Unhandled 'error' event
      ^

Error: spawn node_modules\webpack\bin\webpack.js ENOENT

    at notFoundError (C:\Users\andre\AppData\Roaming\npm\node_modules\cro
ss-env\node_modules\cross-spawn\lib\enoent.js:11:11)
    at verifyENOENT (C:\Users\andre\AppData\Roaming\npm\node_modules\cros
s-env\node_modules\cross-spawn\lib\enoent.js:46:16)
    at ChildProcess.cp.emit (C:\Users\andre\AppData\Roaming\npm\node_modu
les\cross-env\node_modules\cross-spawn\lib\enoent.js:33:19)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:198
:12)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @ watch: `cross-env NODE_ENV=development node_modules/webpack/bi
n/webpack.js --watch --progress --hide-modules --config=node_modules/lara
vel-mix/setup/webpack.config.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the @ watch script.
npm ERR! This is probably not a problem with npm. There is likely additio
nal logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\andre\AppData\Roaming\npm-cache\_logs\2018-01-27T20
_14_57_489Z-debug.log

修改

这是package.json

{

  "private": true,
  "scripts": {
    "dev": "npm run development",
    "development": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
    "watch": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
    "watch-poll": "npm run watch -- --watch-poll",
    "hot": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
    "prod": "npm run production",
    "production": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
  },
  "devDependencies": {
    "axios": "^0.15.3",
    "bootstrap-sass": "^3.3.7",
    "cross-env": "^3.2.3",
    "jquery": "^3.1.1",
    "laravel-mix": "0.*",
    "lodash": "^4.17.4",
    "vue": "^2.1.10"
  },
  "dependencies": {
    "nodejs": "0.0.0"
  }
}

1 个答案:

答案 0 :(得分:3)

npm install是告诉npm(节点包管理器)安装package.json中列出的包的命令。命令npm install node-laravel告诉npm安装包node-laravel,它是一个“[...] Node.js库,用于与Laravel进行交互。”。正在运行npm install node-laravel正在创建node_modules文件夹,因为您正在安装软件包,但这是错误的软件包:node-laravel不是您要查找的内容。

你遇到的问题是npm install没有安装package.json中列出的依赖项,所以让我们解决为什么会这样做。

package.jsondependenciesdevDependencies中列出了两种类型的依赖项,您可以从package.json中看到,所有依赖项都在devDependencies中。当您处于开发环境中时,devDependencies 安装,它们未安装在生产环境中。这(大致)会发生什么:

  1. 您运行npm install
  2. npm安装dependencies
  3. 中列出的所有内容
  4. npm确定您所处的环境类型
  5. 如果您在development npm,还将安装devDependencies
  6. 中列出的软件包

    您的dependencies仅列为 nodejs,因此无法安装npm,因此npm不需要创建node_modules文件夹。因此,您遇到的问题(npm未安装devDependencies中列出的软件包)很可能是因为npm认为您已投入生产。

    有两个选项:

    1. 您可以将环境设置为生产设置,并且无论是运行devDependencies
    2. ,都要求npm安装npm install --only=dev
    3. 您可以通过运行npm config set -g production false然后再次运行npm install来更新环境配置以正确设置环境以进行开发
    4. 第二个选项是问题的解决方案,第一个是解决方法。我推荐选项2。