在Win7上捆绑Meteor应用程序时出现ENOTEMPTY和EPERM异常? :(

时间:2013-01-24 19:12:57

标签: meteor

帮助!

我已经和Meteor合作了大约两个月了,而且在我的OSX家庭环境中,一切都在顺利进行。但是我最近把一些代码带到了我们的Windows 7环境中,而Meteor在Windows上的表现并不一样。

具体来说,代码捆绑不断受到阻碍。当我对代码库进行更改时,不是刷新旧的.meteor / local目录,而是重新绑定应用程序,它会在服务器控制台中向我发送ENOTEMPTY异常。如果我在任务资源管理器中暂停mongod进程并手动删除.meteor / local目录,我可以重新启动应用程序,它将使用新的代码更改捆绑和部署应用程序。

Running on: http://localhost:3000/
No dependency info in bundle. Filesystem monitoring disabled.
Errors prevented startup:
Exception while bundling application:
Error: ENOTEMPTY, directory not empty 'c:\Users\Abigail\My Documents\GitHub\canvas tracker\.meteor\local\build\server'
    at Object.fs.rmdirSync (fs.js:456:18)
    at Object.module.exports.rm_recursive (c:\Program Files (x86)\Meteor\app\lib\files.js:256:10)
    at c:\Program Files (x86)\Meteor\app\lib\files.js:254:15
    at Array.forEach (native)
    at Function._.each._.forEach (c:\Program Files (x86)\Meteor\lib\node_modules\underscore\underscore.js:79:11)
    at Object.module.exports.rm_recursive (c:\Program Files (x86)\Meteor\app\lib\files.js:252:9)
    at _.extend.write_to_directory (c:\Program Files (x86)\Meteor\app\lib\bundler.js:493:11)
    at Object.exports.bundle (c:\Program Files (x86)\Meteor\app\lib\bundler.js:685:12)
    at exports.run.restart_server (c:\Program Files (x86)\Meteor\app\meteor\run.js:615:26)
    at c:\Program Files (x86)\Meteor\app\meteor\run.js:726:9

Please fix the problem and restart.

但它不会进行即时代码更改并重新捆绑。 :(当我尝试启动应用程序时,我也会收到EPERM错误。

Running on: http://localhost:3000/
No dependency info in bundle. Filesystem monitoring disabled.
Errors prevented startup:
Exception while bundling application:
Error: EPERM, operation not permitted 'c:\Users\Abigail\My Documents\GitHub\canvas-tracker\.meteor\local\.build.build'
    at Object.fs.renameSync (fs.js:439:18)
    at _.extend.write_to_directory (c:\Program Files (x86)\Meteor\app\lib\bundler.js:628:8)
    at Object.exports.bundle (c:\Program Files (x86)\Meteor\app\lib\bundler.js:685:12)
    at exports.run.restart_server (c:\Program Files (x86)\Meteor\app\meteor\run.js:615:26)
    at c:\Program Files (x86)\Meteor\app\meteor\run.js:726:9
    at Object.exports.launch_mongo (c:\Program Files (x86)\Meteor\app\lib\mongo_runner.js:146:5)
    at exports.run.launch (c:\Program Files (x86)\Meteor\app\meteor\run.js:712:39)
    at Server.exports.run (c:\Program Files (x86)\Meteor\app\meteor\run.js:770:5)
    at Server.g (events.js:193:14)
    at Server.EventEmitter.emit (events.js:90:17)

Please fix the problem and restart.

有关如何解决此问题的任何想法?我在Windows 7 Ultimate,SP1,x64上使用Meteor 0.5.4。

编辑:我应该提一下,只要代码中出现错误,就会发生这些错误。在我的OSX环境中,如果我有错误,代码仍然会编译,缩小和捆绑,并且页面可能无法渲染,我将在Chrome控制台中收到各种Javascript错误,然后我必须调试。在我的Win7环境中,我正在做同样的事情,但是不是编译我可以在Chrome中调试的半破坏应用程序,而是在捆绑过程中停止。在任何一种情况下,我的Javascript代码都有错误(我知道的很多)。但是在OSX中,它仍然会捆绑,我可以继续调试。在Win7中,由于这些ENOTEMPTY和EPERM异常,我无法进入调试步骤......

编辑:是的,我尝试通过为每个人提供完全访问权限来修改整个项目目录的权限。不幸的是,这并没有成功。

3 个答案:

答案 0 :(得分:3)

Win7的。使其发挥作用的两个步骤。

1)从MongoDB中删除数据库锁 C:\用户** ** USERNAME \ leaderboard.meteor \本地\分贝 mongod.lock

2)关闭指向项目中文件的所有Open Editors C:\用户** ** USERNAME \ leaderboard.meteor \本地\编译\程序\客户端\应用 leaderboard.js

在我的情况下,我保持编辑器打开以编辑leaderboard.js 它需要关闭,因为打开的文件句柄似乎会中断。

答案 1 :(得分:2)

好的,在Tom Wijsman的帮助下,我们成功找到了问题。简短的回答是它是GitHub Bash shell。

答案很长,ENOTEMPTY和EPERM是由捆绑过程中未正确删除的目录引起的。未正确删除的目录是由使用exec()命令的代码引起的,该命令将delete命令传递给shell。原来我使用的是GitHub Bash shell,它区分大小写,不像标准的Windows cmd.exe,它不区分大小写。区分大小写导致shell无法识别应该删除的路径,因此不会将其删除,从而导致捆绑过程中断。

100x感谢Rahul找到关于此问题的先前错误报告!你是在大海捞针中发现针头的英雄!

答案 2 :(得分:2)

在Windows 8中存在确切的问题。在运行meteor cmd时关闭我的McAfee防病毒(实时扫描)解决了它。