在 Laravel 5.4 和 Node.js 上使用 Laravel 混合错误编译资产

Compile assets with Laravel Mix Error on Laravel 5.4 and Node.js

为了使 npm 全局化,我在 CLI 中 运行:export PATH=/opt/plesk/node/7/bin:$PATH on Ubuntu(我安装了 Plesk)。

我在应用程序路径中 运行 npm run watch 知识不多,但我遇到了几个错误:

user@server:~/avisos.pagina$ npm run watch

@ watch /var/www/vhosts/pagina/avisos.pagina cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js

sh: 1: cross-env: not found

npm ERR! Linux 4.9.36-x86_64-linode85

npm ERR! argv "/opt/plesk/node/7/bin/node" "/opt/plesk/node/7/bin/npm" "run" "watch"

npm ERR! node v7.4.0

npm ERR! npm v4.0.5

npm ERR! file sh

npm ERR! code ELIFECYCLE

npm ERR! errno ENOENT

npm ERR! syscall spawn

npm ERR! @ watch: cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js

npm ERR! spawn ENOENT

npm ERR!

npm ERR! Failed at the @ watch script 'cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js'.

npm ERR! Make sure you have the latest version of node.js and npm installed.

npm ERR! If you do, this is most likely a problem with the package,

npm ERR! not with npm itself.

npm ERR! Tell the author that this fails on your system:

npm ERR! cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js

npm ERR! You can get information on how to open an issue for this project with:

npm ERR! npm bugs

npm ERR! Or if that isn't available, you can get their info via:

npm ERR! npm owner ls

npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:

npm ERR! /var/www/vhosts/pagina/avisos.pagina/npm-debug.log

当我阅读 /var/www/vhosts/pagina/avisos.pagina/npm-debug.log 时,我看到的是:

0 info it worked if it ends with ok

1 verbose cli [ '/opt/plesk/node/7/bin/node',

1 verbose cli '/opt/plesk/node/7/bin/npm',

1 verbose cli 'bugs' ]

2 info using npm@4.0.5

3 info using node@v7.4.0

4 silly fetchPackageMetaData .

5 silly fetchDirectoryPackageData .

6 silly bugs url https://www.npmjs.org/package/

7 verbose stack Error: spawn xdg-open ENOENT

7 verbose stack at exports._errnoException (util.js:1022:11)

7 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:193:32)

7 verbose stack at onErrorNT (internal/child_process.js:359:16)

7 verbose stack at _combinedTickCallback (internal/process/next_tick.js:74:11)

7 verbose stack at process._tickCallback (internal/process/next_tick.js:98:9)

8 verbose cwd /var/www/vhosts/pagina/avisos.pagina

9 error Linux 4.9.36-x86_64-linode85

10 error argv "/opt/plesk/node/7/bin/node" "/opt/plesk/node/7/bin/npm" "bugs"

11 error node v7.4.0

12 error npm v4.0.5

13 error path xdg-open

14 error code ENOENT

15 error errno ENOENT

16 error syscall spawn xdg-open

17 error enoent spawn xdg-open ENOENT

18 error enoent spawn xdg-open ENOENT

18 error enoent This is most likely not a problem with npm itself

18 error enoent and is related to npm not being able to find a file.

19 verbose exit [ 1, true ]

现在在我的网站上我可以看到这个而不是 Laravel 5.4 网站:https://i.imgur.com/Q8Su4K9.png

我已经尝试 运行 find /var/www/vhosts/pagina/avisos.pagina --name package.json 但找不到任何地方。在不使应用程序崩溃的情况下使用 Laravel Mix 编译资产的任何想法或如何使其工作?提前致谢!

由于您 运行 宁 Ubuntu,很有可能命令的 cross-env 部分使您的 NPM 出错。我已经 运行 多次解决这个问题并发现删除 cross-env (IIRC,它是 Windows 框的 fix/workaround,所以如果你不是 运行ning Windows 任何地方,没有必要)修复它。或者(或者如果你是 运行宁 Windows),你应该能够安装 cross-envnpm install -g cross-env

我发现当我 运行 遇到问题时直接 运行 节点命令很有帮助,所以我自己得到了错误。在这种情况下:

cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js

如果我的怀疑是正确的,您需要将其转换为:

NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js

npm run watch 之类的东西只是这些较长脚本的快捷方式。这些快捷方式在您的 package.json 文件中声明(如果需要,您也可以在其中定义自己的脚本快捷方式)。