Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

copyFileSync on Windows error: uncaughtException: EPERM: operation not permitted, copyfile #150

Open
rlyders opened this issue Dec 16, 2018 · 0 comments

Comments

@rlyders
Copy link

rlyders commented Dec 16, 2018

graceful-fs@4.1.15


Error occurs on Windows 10 whether I am in DOS (Admin mode or not), Powershell (Admin mode or not), or GitBash.


Environment:
npm 6.4.1
node v10.14.2
tsc 3.2.2

Tutorial I am working through: https://gonehybrid.com/ionic-4-appsync-set-up-authentication-with-amazon-cognito-part-5/


I was able to work around this issue by always deleting the dest file when any error occurs and then trying again.

NOTE: You will notice that I also added 10 re-attempts to allow for the chance that files were being locked by virus protection, but that did not seem to be the case in my situation.

FILE: %userprofile%\AppData\Roaming\npm\node_modules@aws-amplify\cli\node_modules\fs-extra\lib\copy-sync\copy-sync.js

`
function wait(ms) {
var start = Date.now(),
now = start;
while (now - start < ms) {
now = Date.now();
}
}

function copyFile(srcStat, src, dest, opts) {
if (typeof fs.copyFileSync === 'function') {
console.log('----------------------------------');
console.log('----------------------------------');
console.log('fs.copyFileSync( src=' + src + ',');
console.log(' dest=' + dest + ')');

let fileCopyDone = false;
let attempts = 0;
do {
  try {
    attempts++;
    console.log('Attempt #' + attempts + '...');
    fs.copyFileSync(src, dest)
    fileCopyDone = true;
  } catch (err) {
    console.log('ERROR: fs.copyFileSync: ' + err.message);
    if (attempts > 10)
      throw err;
    wait(300);
    if (basicFs.existsSync(dest)) {
      console.log('Delete dest file: ' + dest);
      try {
        basicFs.unlinkSync(dest);
        console.log('successfully deleted: ' + dest);
      } catch (err) {
        console.log('ERROR: basicFs.unlinkSync: ' + err.message);
      }
    }
  }
} while (!fileCopyDone);

console.log('----------------------------------');
console.log('fs.chmodSync(dest=' + dest + ',');
console.log('    srcStat.mode=' + srcStat.mode + ')');
fs.chmodSync(dest, srcStat.mode)
console.log('----------------------------------');
console.log('----------------------------------');
if (opts.preserveTimestamps) {
  return utimesSync(dest, srcStat.atime, srcStat.mtime)
}
return

}
return copyFileFallback(srcStat, src, dest, opts)
}

`

Detailed error message:

2018-12-16T18:08:39.503Z - error: uncaughtException: EPERM: operation not permitted, copyfile 'C:\Users\Richa\projects\quiz-app\amplify\backend\api\quizapp\build\schema.graphql' -> 'C:\Users\Richa\projects\quiz-app\amplify#current-cloud-backend\api\quizapp\build\schema.graphql' date=Sun Dec 16 2018 12:08:39 GMT-0600 (Central Standard Time), pid=23448, uid=null, gid=null, cwd=C:\Users\Richa\projects\quiz-app, execPath=C:\Program Files\nodejs\node.exe, version=v10.14.2, argv=[C:\Program Files\nodejs\node.exe, C:\Users\Richa\AppData\Roaming\npm\node_modules@aws-amplify\cli\bin\amplify, push], rss=123424768, heapTotal=99049472, heapUsed=76451904, external=2053595, loadavg=[0, 0, 0], uptime=89738, trace=[column=3, file=fs.js, function=Object.copyFileSync, line=1724, method=copyFileSync, native=false, column=12, file=C:\Users\Richa\AppData\Roaming\npm\node_modules@aws-amplify\cli\node_modules\fs-extra\lib\copy-sync\copy-sync.js, function=copyFile, line=85, method=null, native=false, column=12, file=C:\Users\Richa\AppData\Roaming\npm\node_modules@aws-amplify\cli\node_modules\fs-extra\lib\copy-sync\copy-sync.js, function=mayCopyFile, line=60, method=null, native=false, column=47, file=C:\Users\Richa\AppData\Roaming\npm\node_modules@aws-amplify\cli\node_modules\fs-extra\lib\copy-sync\copy-sync.js, function=onFile, line=53, method=null, native=false, column=32, file=C:\Users\Richa\AppData\Roaming\npm\node_modules@aws-amplify\cli\node_modules\fs-extra\lib\copy-sync\copy-sync.js, function=getStats, line=47, method=null, native=false, column=10, file=C:\Users\Richa\AppData\Roaming\npm\node_modules@aws-amplify\cli\node_modules\fs-extra\lib\copy-sync\copy-sync.js, function=startCopy, line=37, method=null, native=false, column=10, file=C:\Users\Richa\AppData\Roaming\npm\node_modules@aws-amplify\cli\node_modules\fs-extra\lib\copy-sync\copy-sync.js, function=copyDirItem, line=166, method=null, native=false, column=39, file=C:\Users\Richa\AppData\Roaming\npm\node_modules@aws-amplify\cli\node_modules\fs-extra\lib\copy-sync\copy-sync.js, function=fs.readdirSync.forEach.item, line=159, method=item, native=false, column=null, file=null, function=Array.forEach, line=null, method=forEach, native=false, column=23, file=C:\Users\Richa\AppData\Roaming\npm\node_modules@aws-amplify\cli\node_modules\fs-extra\lib\copy-sync\copy-sync.js, function=copyDir, line=159, method=null, native=false], stack=[Error: EPERM: operation not permitted, copyfile 'C:\Users\Richa\projects\quiz-app\amplify\backend\api\quizapp\build\schema.graphql' -> 'C:\Users\Richa\projects\quiz-app\amplify#current-cloud-backend\api\quizapp\build\schema.graphql', at Object.copyFileSync (fs.js:1724:3), at copyFile (C:\Users\Richa\AppData\Roaming\npm\node_modules@aws-amplify\cli\node_modules\fs-extra\lib\copy-sync\copy-sync.js:85:12), at mayCopyFile (C:\Users\Richa\AppData\Roaming\npm\node_modules@aws-amplify\cli\node_modules\fs-extra\lib\copy-sync\copy-sync.js:60:12), at onFile (C:\Users\Richa\AppData\Roaming\npm\node_modules@aws-amplify\cli\node_modules\fs-extra\lib\copy-sync\copy-sync.js:53:47), at getStats (C:\Users\Richa\AppData\Roaming\npm\node_modules@aws-amplify\cli\node_modules\fs-extra\lib\copy-sync\copy-sync.js:47:32),
at startCopy (C:\Users\Richa\AppData\Roaming\npm\node_modules@aws-amplify\cli\node_modules\fs-extra\lib\copy-sync\copy-sync.js:37:10), at copyDirItem (C:\Users\Richa\AppData\Roaming\npm\node_modules@aws-amplify\cli\node_modules\fs-extra\lib\copy-sync\copy-sync.js:166:10), at fs.readdirSync.forEach.item (C:\Users\Richa\AppData\Roaming\npm\node_modules@aws-amplify\cli\node_modules\fs-extra\lib\copy-sync\copy-sync.js:159:39), at Array.forEach (), at copyDir (C:\Users\Richa\AppData\Roaming\npm\node_modules@aws-amplify\cli\node_modules\fs-extra\lib\copy-sync\copy-sync.js:159:23)]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant