[BUG] EPERM issues since v6.11.0 #476

Description

@rowanoulton

What / Why

We recently upgraded from npm 6.0.1 to 6.12.0 and several of our engineers are encountering persistent EPERM issues when they run npm install.

From all angles the folders in question have the right permissions set, and we've ruled out nvm as a possible reason for this failure too. No combination of uninstalling and reinstalling or cache clearing has resolved it.

Whenever they run npm install, they get output like this:

code EPERM
npm ERR! syscall spawn
npm ERR! errno EPERM
npm ERR! Error: spawn EPERM
npm ERR! at ChildProcess.spawn (internal/child_process.js:394:11)
npm ERR! at Object.spawn (child_process.js:540:9)
npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/pacote/lib/util/git.js:216:24
npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/promise-retry/index.js:29:24
npm ERR! OperationalError: spawn EPERM
npm ERR! at ChildProcess.spawn (internal/child_process.js:394:11)
npm ERR! at Object.spawn (child_process.js:540:9)
npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/pacote/lib/util/git.js:216:24
npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/promise-retry/index.js:29:24 {
npm ERR! cause: Error: spawn EPERM
npm ERR! at ChildProcess.spawn (internal/child_process.js:394:11)
npm ERR! at Object.spawn (child_process.js:540:9)
npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/pacote/lib/util/git.js:216:24
npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/promise-retry/index.js:29:24 {
npm ERR! errno: 'EPERM',
npm ERR! code: 'EPERM',
npm ERR! syscall: 'spawn'
npm ERR! },
npm ERR! stack: 'Error: spawn EPERM\n' +
npm ERR! ' at ChildProcess.spawn (internal/child_process.js:394:11)\n' +
npm ERR! ' at Object.spawn (child_process.js:540:9)\n' +
npm ERR! ' at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/pacote/lib/util/git.js:216:24\n' +
npm ERR! ' at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/promise-retry/index.js:29:24',
npm ERR! errno: 'EPERM',
npm ERR! code: 'EPERM',
npm ERR! syscall: 'spawn',
npm ERR! parent: 'webapp'
npm ERR! }
npm ERR! npm ERR! The operation was rejected by your operating system.
npm ERR! It is likely you do not have the permissions to access this file as the current user
npm ERR! npm ERR! If you believe this might be a permissions issue, please double-check the
npm ERR! permissions of the file and its containing directories, or try running
npm ERR! the command again as root/Administrator.
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/REDACTED/.npm/_logs/2019-11-12T21_45_00_580Z-debug.log

I walked back the version of npm until 6.10.3, where installs work again. The mention of pacote in the above logs seems suspicious when you compare it to the release notes for 6.11.0:

dc8f9e5 pacote@9.5.7: Infer the ownership of all unpacked files in node_modules, so that we never have user-owned files in root-owned folders, or root-owned files in user-owned folders. (@isaacs)

Note that upgrading to 6.13.0 does not fix the problem.

Also note that we have some private git+ssh urls in our package.json

Where

npm public registry

How

Current Behavior

Install fails with above error output, EPERM

Steps to Reproduce

  • npm i -g npm@6.11.0 && npm install

Expected Behavior

Install works as before

Metadata

Metadata

Labels

Bugthing that needs fixingRelease 6.xwork is associated with a specific npm 6 release

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

    , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
     blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
    }
    } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
    })();
    (function(){
    try {
    var __m = "github.com";
    var __re = new RegExp('^' + "github\\.com" + '
    
    Skip to content

    [BUG] EPERM issues since v6.11.0 #476

    Description

    @rowanoulton

    What / Why

    We recently upgraded from npm 6.0.1 to 6.12.0 and several of our engineers are encountering persistent EPERM issues when they run npm install.

    From all angles the folders in question have the right permissions set, and we've ruled out nvm as a possible reason for this failure too. No combination of uninstalling and reinstalling or cache clearing has resolved it.

    Whenever they run npm install, they get output like this:

    code EPERM
    npm ERR! syscall spawn
    npm ERR! errno EPERM
    npm ERR! Error: spawn EPERM
    npm ERR! at ChildProcess.spawn (internal/child_process.js:394:11)
    npm ERR! at Object.spawn (child_process.js:540:9)
    npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/pacote/lib/util/git.js:216:24
    npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/promise-retry/index.js:29:24
    npm ERR! OperationalError: spawn EPERM
    npm ERR! at ChildProcess.spawn (internal/child_process.js:394:11)
    npm ERR! at Object.spawn (child_process.js:540:9)
    npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/pacote/lib/util/git.js:216:24
    npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/promise-retry/index.js:29:24 {
    npm ERR! cause: Error: spawn EPERM
    npm ERR! at ChildProcess.spawn (internal/child_process.js:394:11)
    npm ERR! at Object.spawn (child_process.js:540:9)
    npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/pacote/lib/util/git.js:216:24
    npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/promise-retry/index.js:29:24 {
    npm ERR! errno: 'EPERM',
    npm ERR! code: 'EPERM',
    npm ERR! syscall: 'spawn'
    npm ERR! },
    npm ERR! stack: 'Error: spawn EPERM\n' +
    npm ERR! ' at ChildProcess.spawn (internal/child_process.js:394:11)\n' +
    npm ERR! ' at Object.spawn (child_process.js:540:9)\n' +
    npm ERR! ' at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/pacote/lib/util/git.js:216:24\n' +
    npm ERR! ' at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/promise-retry/index.js:29:24',
    npm ERR! errno: 'EPERM',
    npm ERR! code: 'EPERM',
    npm ERR! syscall: 'spawn',
    npm ERR! parent: 'webapp'
    npm ERR! }
    npm ERR! npm ERR! The operation was rejected by your operating system.
    npm ERR! It is likely you do not have the permissions to access this file as the current user
    npm ERR! npm ERR! If you believe this might be a permissions issue, please double-check the
    npm ERR! permissions of the file and its containing directories, or try running
    npm ERR! the command again as root/Administrator.
    npm ERR! A complete log of this run can be found in:
    npm ERR! /Users/REDACTED/.npm/_logs/2019-11-12T21_45_00_580Z-debug.log
    

    I walked back the version of npm until 6.10.3, where installs work again. The mention of pacote in the above logs seems suspicious when you compare it to the release notes for 6.11.0:

    dc8f9e5 pacote@9.5.7: Infer the ownership of all unpacked files in node_modules, so that we never have user-owned files in root-owned folders, or root-owned files in user-owned folders. (@isaacs)

    Note that upgrading to 6.13.0 does not fix the problem.

    Also note that we have some private git+ssh urls in our package.json

    Where

    npm public registry

    How

    Current Behavior

    Install fails with above error output, EPERM

    Steps to Reproduce

    • npm i -g npm@6.11.0 && npm install

    Expected Behavior

    Install works as before

    Metadata

    Metadata

    Labels

    Bugthing that needs fixingRelease 6.xwork is associated with a specific npm 6 release

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
      Skip to content

      [BUG] EPERM issues since v6.11.0 #476

      Description

      @rowanoulton

      What / Why

      We recently upgraded from npm 6.0.1 to 6.12.0 and several of our engineers are encountering persistent EPERM issues when they run npm install.

      From all angles the folders in question have the right permissions set, and we've ruled out nvm as a possible reason for this failure too. No combination of uninstalling and reinstalling or cache clearing has resolved it.

      Whenever they run npm install, they get output like this:

      code EPERM
      npm ERR! syscall spawn
      npm ERR! errno EPERM
      npm ERR! Error: spawn EPERM
      npm ERR! at ChildProcess.spawn (internal/child_process.js:394:11)
      npm ERR! at Object.spawn (child_process.js:540:9)
      npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/pacote/lib/util/git.js:216:24
      npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/promise-retry/index.js:29:24
      npm ERR! OperationalError: spawn EPERM
      npm ERR! at ChildProcess.spawn (internal/child_process.js:394:11)
      npm ERR! at Object.spawn (child_process.js:540:9)
      npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/pacote/lib/util/git.js:216:24
      npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/promise-retry/index.js:29:24 {
      npm ERR! cause: Error: spawn EPERM
      npm ERR! at ChildProcess.spawn (internal/child_process.js:394:11)
      npm ERR! at Object.spawn (child_process.js:540:9)
      npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/pacote/lib/util/git.js:216:24
      npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/promise-retry/index.js:29:24 {
      npm ERR! errno: 'EPERM',
      npm ERR! code: 'EPERM',
      npm ERR! syscall: 'spawn'
      npm ERR! },
      npm ERR! stack: 'Error: spawn EPERM\n' +
      npm ERR! ' at ChildProcess.spawn (internal/child_process.js:394:11)\n' +
      npm ERR! ' at Object.spawn (child_process.js:540:9)\n' +
      npm ERR! ' at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/pacote/lib/util/git.js:216:24\n' +
      npm ERR! ' at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/promise-retry/index.js:29:24',
      npm ERR! errno: 'EPERM',
      npm ERR! code: 'EPERM',
      npm ERR! syscall: 'spawn',
      npm ERR! parent: 'webapp'
      npm ERR! }
      npm ERR! npm ERR! The operation was rejected by your operating system.
      npm ERR! It is likely you do not have the permissions to access this file as the current user
      npm ERR! npm ERR! If you believe this might be a permissions issue, please double-check the
      npm ERR! permissions of the file and its containing directories, or try running
      npm ERR! the command again as root/Administrator.
      npm ERR! A complete log of this run can be found in:
      npm ERR! /Users/REDACTED/.npm/_logs/2019-11-12T21_45_00_580Z-debug.log
      

      I walked back the version of npm until 6.10.3, where installs work again. The mention of pacote in the above logs seems suspicious when you compare it to the release notes for 6.11.0:

      dc8f9e5 pacote@9.5.7: Infer the ownership of all unpacked files in node_modules, so that we never have user-owned files in root-owned folders, or root-owned files in user-owned folders. (@isaacs)

      Note that upgrading to 6.13.0 does not fix the problem.

      Also note that we have some private git+ssh urls in our package.json

      Where

      npm public registry

      How

      Current Behavior

      Install fails with above error output, EPERM

      Steps to Reproduce

      • npm i -g npm@6.11.0 && npm install

      Expected Behavior

      Install works as before

      Metadata

      Metadata

      Labels

      Bugthing that needs fixingRelease 6.xwork is associated with a specific npm 6 release

      Type

      No type

      Projects

      No projects

        Milestone

        No milestone

        Relationships

        None yet

        Development

        No branches or pull requests

        Issue actions

        , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
        Skip to content

        [BUG] EPERM issues since v6.11.0 #476

        Description

        @rowanoulton

        What / Why

        We recently upgraded from npm 6.0.1 to 6.12.0 and several of our engineers are encountering persistent EPERM issues when they run npm install.

        From all angles the folders in question have the right permissions set, and we've ruled out nvm as a possible reason for this failure too. No combination of uninstalling and reinstalling or cache clearing has resolved it.

        Whenever they run npm install, they get output like this:

        code EPERM
        npm ERR! syscall spawn
        npm ERR! errno EPERM
        npm ERR! Error: spawn EPERM
        npm ERR! at ChildProcess.spawn (internal/child_process.js:394:11)
        npm ERR! at Object.spawn (child_process.js:540:9)
        npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/pacote/lib/util/git.js:216:24
        npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/promise-retry/index.js:29:24
        npm ERR! OperationalError: spawn EPERM
        npm ERR! at ChildProcess.spawn (internal/child_process.js:394:11)
        npm ERR! at Object.spawn (child_process.js:540:9)
        npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/pacote/lib/util/git.js:216:24
        npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/promise-retry/index.js:29:24 {
        npm ERR! cause: Error: spawn EPERM
        npm ERR! at ChildProcess.spawn (internal/child_process.js:394:11)
        npm ERR! at Object.spawn (child_process.js:540:9)
        npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/pacote/lib/util/git.js:216:24
        npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/promise-retry/index.js:29:24 {
        npm ERR! errno: 'EPERM',
        npm ERR! code: 'EPERM',
        npm ERR! syscall: 'spawn'
        npm ERR! },
        npm ERR! stack: 'Error: spawn EPERM\n' +
        npm ERR! ' at ChildProcess.spawn (internal/child_process.js:394:11)\n' +
        npm ERR! ' at Object.spawn (child_process.js:540:9)\n' +
        npm ERR! ' at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/pacote/lib/util/git.js:216:24\n' +
        npm ERR! ' at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/promise-retry/index.js:29:24',
        npm ERR! errno: 'EPERM',
        npm ERR! code: 'EPERM',
        npm ERR! syscall: 'spawn',
        npm ERR! parent: 'webapp'
        npm ERR! }
        npm ERR! npm ERR! The operation was rejected by your operating system.
        npm ERR! It is likely you do not have the permissions to access this file as the current user
        npm ERR! npm ERR! If you believe this might be a permissions issue, please double-check the
        npm ERR! permissions of the file and its containing directories, or try running
        npm ERR! the command again as root/Administrator.
        npm ERR! A complete log of this run can be found in:
        npm ERR! /Users/REDACTED/.npm/_logs/2019-11-12T21_45_00_580Z-debug.log
        

        I walked back the version of npm until 6.10.3, where installs work again. The mention of pacote in the above logs seems suspicious when you compare it to the release notes for 6.11.0:

        dc8f9e5 pacote@9.5.7: Infer the ownership of all unpacked files in node_modules, so that we never have user-owned files in root-owned folders, or root-owned files in user-owned folders. (@isaacs)

        Note that upgrading to 6.13.0 does not fix the problem.

        Also note that we have some private git+ssh urls in our package.json

        Where

        npm public registry

        How

        Current Behavior

        Install fails with above error output, EPERM

        Steps to Reproduce

        • npm i -g npm@6.11.0 && npm install

        Expected Behavior

        Install works as before

        Metadata

        Metadata

        Labels

        Bugthing that needs fixingRelease 6.xwork is associated with a specific npm 6 release

        Type

        No type

        Projects

        No projects

          Milestone

          No milestone

          Relationships

          None yet

          Development

          No branches or pull requests

          Issue actions

          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
          Skip to content

          [BUG] EPERM issues since v6.11.0 #476

          Description

          @rowanoulton

          What / Why

          We recently upgraded from npm 6.0.1 to 6.12.0 and several of our engineers are encountering persistent EPERM issues when they run npm install.

          From all angles the folders in question have the right permissions set, and we've ruled out nvm as a possible reason for this failure too. No combination of uninstalling and reinstalling or cache clearing has resolved it.

          Whenever they run npm install, they get output like this:

          code EPERM
          npm ERR! syscall spawn
          npm ERR! errno EPERM
          npm ERR! Error: spawn EPERM
          npm ERR! at ChildProcess.spawn (internal/child_process.js:394:11)
          npm ERR! at Object.spawn (child_process.js:540:9)
          npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/pacote/lib/util/git.js:216:24
          npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/promise-retry/index.js:29:24
          npm ERR! OperationalError: spawn EPERM
          npm ERR! at ChildProcess.spawn (internal/child_process.js:394:11)
          npm ERR! at Object.spawn (child_process.js:540:9)
          npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/pacote/lib/util/git.js:216:24
          npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/promise-retry/index.js:29:24 {
          npm ERR! cause: Error: spawn EPERM
          npm ERR! at ChildProcess.spawn (internal/child_process.js:394:11)
          npm ERR! at Object.spawn (child_process.js:540:9)
          npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/pacote/lib/util/git.js:216:24
          npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/promise-retry/index.js:29:24 {
          npm ERR! errno: 'EPERM',
          npm ERR! code: 'EPERM',
          npm ERR! syscall: 'spawn'
          npm ERR! },
          npm ERR! stack: 'Error: spawn EPERM\n' +
          npm ERR! ' at ChildProcess.spawn (internal/child_process.js:394:11)\n' +
          npm ERR! ' at Object.spawn (child_process.js:540:9)\n' +
          npm ERR! ' at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/pacote/lib/util/git.js:216:24\n' +
          npm ERR! ' at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/promise-retry/index.js:29:24',
          npm ERR! errno: 'EPERM',
          npm ERR! code: 'EPERM',
          npm ERR! syscall: 'spawn',
          npm ERR! parent: 'webapp'
          npm ERR! }
          npm ERR! npm ERR! The operation was rejected by your operating system.
          npm ERR! It is likely you do not have the permissions to access this file as the current user
          npm ERR! npm ERR! If you believe this might be a permissions issue, please double-check the
          npm ERR! permissions of the file and its containing directories, or try running
          npm ERR! the command again as root/Administrator.
          npm ERR! A complete log of this run can be found in:
          npm ERR! /Users/REDACTED/.npm/_logs/2019-11-12T21_45_00_580Z-debug.log
          

          I walked back the version of npm until 6.10.3, where installs work again. The mention of pacote in the above logs seems suspicious when you compare it to the release notes for 6.11.0:

          dc8f9e5 pacote@9.5.7: Infer the ownership of all unpacked files in node_modules, so that we never have user-owned files in root-owned folders, or root-owned files in user-owned folders. (@isaacs)

          Note that upgrading to 6.13.0 does not fix the problem.

          Also note that we have some private git+ssh urls in our package.json

          Where

          npm public registry

          How

          Current Behavior

          Install fails with above error output, EPERM

          Steps to Reproduce

          • npm i -g npm@6.11.0 && npm install

          Expected Behavior

          Install works as before

          Metadata

          Metadata

          Labels

          Bugthing that needs fixingRelease 6.xwork is associated with a specific npm 6 release

          Type

          No type

          Projects

          No projects

            Milestone

            No milestone

            Relationships

            None yet

            Development

            No branches or pull requests

            Issue actions

            , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
            Skip to content

            [BUG] EPERM issues since v6.11.0 #476

            Description

            @rowanoulton

            What / Why

            We recently upgraded from npm 6.0.1 to 6.12.0 and several of our engineers are encountering persistent EPERM issues when they run npm install.

            From all angles the folders in question have the right permissions set, and we've ruled out nvm as a possible reason for this failure too. No combination of uninstalling and reinstalling or cache clearing has resolved it.

            Whenever they run npm install, they get output like this:

            code EPERM
            npm ERR! syscall spawn
            npm ERR! errno EPERM
            npm ERR! Error: spawn EPERM
            npm ERR! at ChildProcess.spawn (internal/child_process.js:394:11)
            npm ERR! at Object.spawn (child_process.js:540:9)
            npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/pacote/lib/util/git.js:216:24
            npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/promise-retry/index.js:29:24
            npm ERR! OperationalError: spawn EPERM
            npm ERR! at ChildProcess.spawn (internal/child_process.js:394:11)
            npm ERR! at Object.spawn (child_process.js:540:9)
            npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/pacote/lib/util/git.js:216:24
            npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/promise-retry/index.js:29:24 {
            npm ERR! cause: Error: spawn EPERM
            npm ERR! at ChildProcess.spawn (internal/child_process.js:394:11)
            npm ERR! at Object.spawn (child_process.js:540:9)
            npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/pacote/lib/util/git.js:216:24
            npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/promise-retry/index.js:29:24 {
            npm ERR! errno: 'EPERM',
            npm ERR! code: 'EPERM',
            npm ERR! syscall: 'spawn'
            npm ERR! },
            npm ERR! stack: 'Error: spawn EPERM\n' +
            npm ERR! ' at ChildProcess.spawn (internal/child_process.js:394:11)\n' +
            npm ERR! ' at Object.spawn (child_process.js:540:9)\n' +
            npm ERR! ' at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/pacote/lib/util/git.js:216:24\n' +
            npm ERR! ' at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/promise-retry/index.js:29:24',
            npm ERR! errno: 'EPERM',
            npm ERR! code: 'EPERM',
            npm ERR! syscall: 'spawn',
            npm ERR! parent: 'webapp'
            npm ERR! }
            npm ERR! npm ERR! The operation was rejected by your operating system.
            npm ERR! It is likely you do not have the permissions to access this file as the current user
            npm ERR! npm ERR! If you believe this might be a permissions issue, please double-check the
            npm ERR! permissions of the file and its containing directories, or try running
            npm ERR! the command again as root/Administrator.
            npm ERR! A complete log of this run can be found in:
            npm ERR! /Users/REDACTED/.npm/_logs/2019-11-12T21_45_00_580Z-debug.log
            

            I walked back the version of npm until 6.10.3, where installs work again. The mention of pacote in the above logs seems suspicious when you compare it to the release notes for 6.11.0:

            dc8f9e5 pacote@9.5.7: Infer the ownership of all unpacked files in node_modules, so that we never have user-owned files in root-owned folders, or root-owned files in user-owned folders. (@isaacs)

            Note that upgrading to 6.13.0 does not fix the problem.

            Also note that we have some private git+ssh urls in our package.json

            Where

            npm public registry

            How

            Current Behavior

            Install fails with above error output, EPERM

            Steps to Reproduce

            • npm i -g npm@6.11.0 && npm install

            Expected Behavior

            Install works as before

            Metadata

            Metadata

            Labels

            Bugthing that needs fixingRelease 6.xwork is associated with a specific npm 6 release

            Type

            No type

            Projects

            No projects

              Milestone

              No milestone

              Relationships

              None yet

              Development

              No branches or pull requests

              Issue actions

              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
              Skip to content

              [BUG] EPERM issues since v6.11.0 #476

              Description

              @rowanoulton

              What / Why

              We recently upgraded from npm 6.0.1 to 6.12.0 and several of our engineers are encountering persistent EPERM issues when they run npm install.

              From all angles the folders in question have the right permissions set, and we've ruled out nvm as a possible reason for this failure too. No combination of uninstalling and reinstalling or cache clearing has resolved it.

              Whenever they run npm install, they get output like this:

              code EPERM
              npm ERR! syscall spawn
              npm ERR! errno EPERM
              npm ERR! Error: spawn EPERM
              npm ERR! at ChildProcess.spawn (internal/child_process.js:394:11)
              npm ERR! at Object.spawn (child_process.js:540:9)
              npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/pacote/lib/util/git.js:216:24
              npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/promise-retry/index.js:29:24
              npm ERR! OperationalError: spawn EPERM
              npm ERR! at ChildProcess.spawn (internal/child_process.js:394:11)
              npm ERR! at Object.spawn (child_process.js:540:9)
              npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/pacote/lib/util/git.js:216:24
              npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/promise-retry/index.js:29:24 {
              npm ERR! cause: Error: spawn EPERM
              npm ERR! at ChildProcess.spawn (internal/child_process.js:394:11)
              npm ERR! at Object.spawn (child_process.js:540:9)
              npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/pacote/lib/util/git.js:216:24
              npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/promise-retry/index.js:29:24 {
              npm ERR! errno: 'EPERM',
              npm ERR! code: 'EPERM',
              npm ERR! syscall: 'spawn'
              npm ERR! },
              npm ERR! stack: 'Error: spawn EPERM\n' +
              npm ERR! ' at ChildProcess.spawn (internal/child_process.js:394:11)\n' +
              npm ERR! ' at Object.spawn (child_process.js:540:9)\n' +
              npm ERR! ' at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/pacote/lib/util/git.js:216:24\n' +
              npm ERR! ' at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/promise-retry/index.js:29:24',
              npm ERR! errno: 'EPERM',
              npm ERR! code: 'EPERM',
              npm ERR! syscall: 'spawn',
              npm ERR! parent: 'webapp'
              npm ERR! }
              npm ERR! npm ERR! The operation was rejected by your operating system.
              npm ERR! It is likely you do not have the permissions to access this file as the current user
              npm ERR! npm ERR! If you believe this might be a permissions issue, please double-check the
              npm ERR! permissions of the file and its containing directories, or try running
              npm ERR! the command again as root/Administrator.
              npm ERR! A complete log of this run can be found in:
              npm ERR! /Users/REDACTED/.npm/_logs/2019-11-12T21_45_00_580Z-debug.log
              

              I walked back the version of npm until 6.10.3, where installs work again. The mention of pacote in the above logs seems suspicious when you compare it to the release notes for 6.11.0:

              dc8f9e5 pacote@9.5.7: Infer the ownership of all unpacked files in node_modules, so that we never have user-owned files in root-owned folders, or root-owned files in user-owned folders. (@isaacs)

              Note that upgrading to 6.13.0 does not fix the problem.

              Also note that we have some private git+ssh urls in our package.json

              Where

              npm public registry

              How

              Current Behavior

              Install fails with above error output, EPERM

              Steps to Reproduce

              • npm i -g npm@6.11.0 && npm install

              Expected Behavior

              Install works as before

              Metadata

              Metadata

              Labels

              Bugthing that needs fixingRelease 6.xwork is associated with a specific npm 6 release

              Type

              No type

              Projects

              No projects

                Milestone

                No milestone

                Relationships

                None yet

                Development

                No branches or pull requests

                Issue actions

                , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
                Skip to content

                [BUG] EPERM issues since v6.11.0 #476

                Description

                @rowanoulton

                What / Why

                We recently upgraded from npm 6.0.1 to 6.12.0 and several of our engineers are encountering persistent EPERM issues when they run npm install.

                From all angles the folders in question have the right permissions set, and we've ruled out nvm as a possible reason for this failure too. No combination of uninstalling and reinstalling or cache clearing has resolved it.

                Whenever they run npm install, they get output like this:

                code EPERM
                npm ERR! syscall spawn
                npm ERR! errno EPERM
                npm ERR! Error: spawn EPERM
                npm ERR! at ChildProcess.spawn (internal/child_process.js:394:11)
                npm ERR! at Object.spawn (child_process.js:540:9)
                npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/pacote/lib/util/git.js:216:24
                npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/promise-retry/index.js:29:24
                npm ERR! OperationalError: spawn EPERM
                npm ERR! at ChildProcess.spawn (internal/child_process.js:394:11)
                npm ERR! at Object.spawn (child_process.js:540:9)
                npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/pacote/lib/util/git.js:216:24
                npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/promise-retry/index.js:29:24 {
                npm ERR! cause: Error: spawn EPERM
                npm ERR! at ChildProcess.spawn (internal/child_process.js:394:11)
                npm ERR! at Object.spawn (child_process.js:540:9)
                npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/pacote/lib/util/git.js:216:24
                npm ERR! at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/promise-retry/index.js:29:24 {
                npm ERR! errno: 'EPERM',
                npm ERR! code: 'EPERM',
                npm ERR! syscall: 'spawn'
                npm ERR! },
                npm ERR! stack: 'Error: spawn EPERM\n' +
                npm ERR! ' at ChildProcess.spawn (internal/child_process.js:394:11)\n' +
                npm ERR! ' at Object.spawn (child_process.js:540:9)\n' +
                npm ERR! ' at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/pacote/lib/util/git.js:216:24\n' +
                npm ERR! ' at /Users/REDACTED/.nvm/versions/node/v12.13.0/lib/node_modules/npm/node_modules/promise-retry/index.js:29:24',
                npm ERR! errno: 'EPERM',
                npm ERR! code: 'EPERM',
                npm ERR! syscall: 'spawn',
                npm ERR! parent: 'webapp'
                npm ERR! }
                npm ERR! npm ERR! The operation was rejected by your operating system.
                npm ERR! It is likely you do not have the permissions to access this file as the current user
                npm ERR! npm ERR! If you believe this might be a permissions issue, please double-check the
                npm ERR! permissions of the file and its containing directories, or try running
                npm ERR! the command again as root/Administrator.
                npm ERR! A complete log of this run can be found in:
                npm ERR! /Users/REDACTED/.npm/_logs/2019-11-12T21_45_00_580Z-debug.log
                

                I walked back the version of npm until 6.10.3, where installs work again. The mention of pacote in the above logs seems suspicious when you compare it to the release notes for 6.11.0:

                dc8f9e5 pacote@9.5.7: Infer the ownership of all unpacked files in node_modules, so that we never have user-owned files in root-owned folders, or root-owned files in user-owned folders. (@isaacs)

                Note that upgrading to 6.13.0 does not fix the problem.

                Also note that we have some private git+ssh urls in our package.json

                Where

                npm public registry

                How

                Current Behavior

                Install fails with above error output, EPERM

                Steps to Reproduce

                • npm i -g npm@6.11.0 && npm install

                Expected Behavior

                Install works as before

                Metadata

                Metadata

                Labels

                Bugthing that needs fixingRelease 6.xwork is associated with a specific npm 6 release

                Type

                No type

                Projects

                No projects

                  Milestone

                  No milestone

                  Relationships

                  None yet

                  Development

                  No branches or pull requests

                  Issue actions