2016-04-21 16 views
11

Có phải ứng dụng SailsJS hoạt động trên máy văn phòng của tôi chứ không phải cục bộ, tôi tự hỏi tại sao? Tại địa phương tôi chạy Linux. Trong văn phòng Mac. Tại địa phương tôi nhận đượcSailsJS 0.11: ENOENT: không có tệp hoặc thư mục nào, stat '.../node_modules/.bin/cdl'

Error: ENOENT: no such file or directory, stat '/home/jiewmeng/Dropbox/meclub/node_modules/.bin/cdl' at Error (native) at Object.fs.statSync (fs.js:849:18) at /home/jiewmeng/Dropbox/meclub/node_modules/include-all/index.js:44:12 at Array.forEach (native) at requireAll (/home/jiewmeng/Dropbox/meclub/node_modules/include-all/index.js:40:9) at /home/jiewmeng/Dropbox/meclub/node_modules/include-all/index.js:50:23 at Array.forEach (native) at requireAll (/home/jiewmeng/Dropbox/meclub/node_modules/include-all/index.js:40:9) at buildDictionary (/home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/sails-build-dictionary/index.js:68:14) at Function.module.exports.optional (/home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/sails-build-dictionary/index.js:160:9) at Array.async.auto.nodeModulesFolder (/home/jiewmeng/Dropbox/meclub/node_modules/sails/lib/hooks/moduleloader/index.js:379:27) at /home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/async/lib/async.js:484:38 at _each (/home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/async/lib/async.js:46:13) at Object.async.auto (/home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/async/lib/async.js:455:9) at Hook.loadUserHooks (/home/jiewmeng/Dropbox/meclub/node_modules/sails/lib/hooks/moduleloader/index.js:363:13) at Hook.bound [as loadUserHooks] (/home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/lodash/dist/lodash.js:729:21) at Hook.initialize (/home/jiewmeng/Dropbox/meclub/node_modules/sails/lib/hooks/userhooks/index.js:29:18) at Hook.bound [as initialize] (/home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/lodash/dist/lodash.js:729:21) at /home/jiewmeng/Dropbox/meclub/node_modules/sails/lib/hooks/index.js:75:14 at /home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/async/lib/async.js:451:17 at /home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/async/lib/async.js:441:17 at _each (/home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/async/lib/async.js:46:13) at Immediate.taskComplete (/home/jiewmeng/Dropbox/meclub/node_modules/sails/node_modules/async/lib/async.js:440:13) at processImmediate [as _immediateCallback] (timers.js:374:17)

Tôi đang sử dụng Sails 0.11. Máy chủ thực sự có thể bắt đầu với Sails 0.12 nhưng có một số thay đổi đột phá, do đó tôi bị kẹt với 0.11 cho bây giờ. Tôi đang sử dụng Node 4.

+0

Có thể có một số mô-đun cụ thể theo hệ điều hành vì vậy nếu có mô-đun được biên dịch khi bạn chạy * npm install ... * nó có thể không tương thích (do đó không tìm thấy) trong os khác – Molda

Trả lời

7

Tôi nghĩ rằng bạn đang sử dụng dropbox để đồng bộ hóa máy tính xách tay văn phòng với máy tính của bạn, do đó một số tác phẩm đang nhận được thêm vào dự án của bạn mà sẽ không gây ra vấn đề trong một hệ điều hành nhưng có thể tạo ra vấn đề này trong khác.

Vì vậy, tôi đề nghị rằng bạn nên làm theo các thông lệ tiêu chuẩn để sao chép dự án

  1. Sử dụng git hoặc bitbucket nhân bản dự án.
  2. cài đặt các phụ thuộc => npm cài đặt

Không sử dụng hộp kéo thả để đồng bộ hóa dự án. Sử dụng hệ thống kiểm soát phiên bản để sao chép/kéo mã và cài đặt tất cả các phụ thuộc

because node-gyp compiles native add-on modules for Node.js with respect to OS

và hy vọng, sau này nó sẽ hoạt động tốt.

Nếu bạn không muốn sử dụng VCS sau đó bạn có thể làm theo các bước dưới đây:

# cd /home/jiewmeng/Dropbox/meclub 
# sudo rm -rf node_modules 
# rm -rf ~/.npm 
# npm cache clear 
# npm install 

Đó là tất cả bạn cần làm.

+0

Đối với tôi, tôi đã thử 'rm -rf node_modules/*' nhiều lần. Dropbox không đồng bộ thư mục 'node_modules'. Nhưng chìa khóa cho tôi là tôi phải làm 'rm -rf/node_modules/.npm' bằng cách nào đó nó không bị loại bỏ khỏi lệnh' rm' đầu tiên. Có thể các thư mục ẩn nằm ở –

+0

@JiewMeng, bởi vì .npm là một thư mục và để xóa một thư mục bạn cần phải sử dụng lực gỡ bỏ đó là bởi Nó không hoạt động với chỉ rm. –

5

Bạn cần phải xây dựng lại node_modules nếu bạn đang chuyển sang một máy mới. Bạn có thể làm điều đó như thế này:

cd /home/jiewmeng/Dropbox/meclub 
rm -rf node_modules 
npm install 

Lý do tại sao điều này là cần thiết là các thư mục .bin đầy symlinks. Điều này có thể sẽ gây ra sự cố với Dropbox. Ngoài ra, tài nguyên trong thư mục .bin đôi khi được biên dịch nguyên bản. Chuyển từ Ubuntu sang Mac OSX mà không biên dịch lại, sẽ là một vấn đề khi chạy cho nhiều thành phần.

Giống như với VCS, tôi khuyên bạn không nên đồng bộ hóa thư mục node_modules. Điều này không nên được chia sẻ giữa các máy. Bạn có thể quản lý các phụ thuộc này bằng cách sử dụng NPM trên mỗi máy tính.

2
  1. Hãy chắc chắn rằng bạn đang chạy Sails từ đúng thư mục, sử dụng sails lift hoặc bất cứ điều gì bạn sử dụng
  2. Thực hiện npm install để đảm bảo tất cả các module được cài đặt
  3. thủ kiểm tra xem tất cả các module trong gói. json có sẵn trong thư mục node_modules của bạn
  4. Đảm bảo các phiên bản của Nút giống nhau ở cả hai (không phải là vấn đề ngay cả khi không - trong hầu hết các trường hợp)
  5. Thử cài đặt lại các đuôi và nút trong trường hợp xấu nhất.
+0

Vui lòng cho chúng tôi biết nếu có giải pháp nào hoạt động –

5

Bạn không phải xóa toàn bộ thư mục node_modules. Chỉ cần chạy npm rebuild và nó sẽ xây dựng lại mô-đun nếu chúng không khớp với kiến ​​trúc hiện tại của bạn.

Các vấn đề liên quan