【问题标题】:Laravel mix npm run dev on linux produce SyntaxError: missing ) after argument listLaravel mix npm run dev on linux 在参数列表后产生 SyntaxError: missing )
【发布时间】:2021-09-30 09:27:25
【问题描述】:

我无法在我的登台 Linux 服务器上使用 npm run dev|prod|watch。它产生这个:

 npm run production

glob error [Error: EACCES: permission denied, scandir '/root/.npm/_logs'] {
  errno: -13,
  code: 'EACCES',
  syscall: 'scandir',
  path: '/root/.npm/_logs'
}

> production
> mix --production

/var/www/html/preprodCerf2021/node_modules/laravel-mix/bin/cli.js:2
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
          ^^^^^^^

SyntaxError: missing ) after argument list
    at Object.compileFunction (node:vm:352:18)
    at wrapSafe (node:internal/modules/cjs/loader:1031:15)
    at Module._compile (node:internal/modules/cjs/loader:1065:27)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:79:12)
    at node:internal/main/run_main_module:17:47

nodeJs 是最新的 v 16.8.0 和 npm v 7.21.0 我的编译在我的 windows 开发机器上完美运行。

这是文件所有权:

-rwxr-xr-x   1 www-data www-data    817 sept. 30 10:06 package.json
-rw-r--r--   1 www-data www-data 820729 sept. 30 10:32 package-lock.json
-rwxr-xr-x   1 www-data www-data   1202 janv. 22  2021 phpunit.xml
drwxr-xr-x   8 www-data www-data   4096 sept.  8 16:02 public
-rwxr-xr-x   1 www-data www-data   3780 janv. 22  2021 README.md
drwxr-xr-x   8 www-data www-data   4096 août  31 12:55 resources
drwxr-xr-x   2 www-data www-data   4096 janv. 28  2021 routes
-rwxr-xr-x   1 www-data www-data    563 janv. 22  2021 server.php
drwxrwxr-x   6 www-data www-data   4096 mars   5  2021 storage
-rwxr-xr-x   1 www-data www-data    181 janv. 22  2021 .styleci.yml
-rwxr-xr-x   1 www-data www-data    548 sept.  9 15:36 tailwind.config.js
drwxr-xr-x   4 www-data www-data   4096 janv. 28  2021 tests
drwxr-xr-x  61 www-data www-data   4096 août  31 12:56 vendor
-rwxr-xr-x   1 www-data www-data    669 sept. 30 11:58 webpack.mix.js

【问题讨论】:

  • 您是否以 sudo/root 用户身份运行它?您提到的 node/npm 版本是针对 root 用户的吗?您还可以共享项目中文件的文件所有权用户:组吗?
  • 我以 root 身份运行 npm,文件归 www-data:www-data 所有

标签: node.js laravel npm laravel-mix


【解决方案1】:

在尝试以 root 用户身份运行 npm 但文件所有权属于不同用户时,我也遇到过类似的问题。您可以尝试以下方法之一:

  1. 尝试使用 www-data 用户运行 npm
  2. 将文件的所有权更改为 sudoable 用户
    # login as a user that has sudo access and change file ownership
    sudo chown -R myuser:myuser /path/to/project/
    
    # run npm commands as myuser
    npm install && npm run production
    
    # change the permissions to previous state
    sudo chown -R www-data:www-data /path/to/project/
    
  3. 将文件的所有权更改为 root 用户(目前这对我没有用,但可能对你有用)
    # enter sudo mode and change ownership to root
    sudo su
    chown -R root:root /path/to/project/
    
    # run npm commands as root user
    npm install && npm run production
    
    # change the permissions to previous state
    chown -R www-data:www-data /path/to/project/
    
    # exit sudo mode
    exit
    

【讨论】:

  • 以 www-data 运行产生“此帐户当前不可用。”
  • 您是否尝试过其他两个选项?尝试使用其他用户(具有 sudo 访问权限或尝试使用 sudo 用户)。
  • 我已经在使用 root 用户,并且作为 www-data 它说该帐户不可用
  • 是的,www-data 不是 shell 用户,因此您将无法使用它。请检查我上面的答案。如果您尝试使用 root,请将文件和目录所有权更改为 root 用户,然后尝试运行 npm。
【解决方案2】:

最后我试了成功,npm很神秘

rm node_modules -rf && npm install

【讨论】:

    猜你喜欢
    • 2021-07-22
    • 1970-01-01
    • 2017-09-22
    • 1970-01-01
    • 2018-09-07
    • 1970-01-01
    • 2021-04-25
    • 2018-03-26
    • 2013-03-11
    相关资源
    最近更新 更多