2013-03-08 14 views
5

Im mới đối với nút js. Tôi đã sử dụng Js hợp chất để tạo ra một hoạt động crud.Lỗi: Không thể tìm thấy mô-đun 'ngọc bích' '

Ứng dụng đã làm việc tốt cho đến khi tôi đã cố gắng để cảnh báo một giá trị, sau đó tôi nhận được lỗi

500 Error: Cannot find module 'jade~' 
at Function.Module._resolveFilename (module.js:338:15) 
at Function.Module._load (module.js:280:25) 
at Module.require (module.js:362:17) 
at require (module.js:378:17) 

Làm thế nào để giải quyết

chỉ số của tôi này

#tabs 
    ul 
    li 
     a(href='#tabs-1') New Leave 
    li 
     a(href='#tabs-2') Index of Leave 
    #tabs-1 
    .page-header 
     h1 New employee 

    - var form = formFor(employee, {action: pathTo.employees(), method: 'POST', id: "employee_form", class: 'form-horizontal'}) 

    != form.begin() 
    != errorMessagesFor(employee) 
    .control-group 
     != form.label("code", false, {class: "control-label"}) 
     .controls 
     != form.input("code") 
    .control-group 
    != form.label("description", false, {class: "control-label"}) 
     .controls 
     != form.input("description") 
    .control-group 
     != form.label("applicable", false, {class: "control-label"}) 
     .controls 
     != form.input("applicable") 
    .control-group 
     != form.label("cForward", false, {class: "control-label"}) 
     .controls 
     != form.checkbox("cForward") 
    .control-group 
     != form.label("limit", false, {class: "control-label"}) 
     .controls 
     != form.checkbox("limit") 
    .control-group 
     != form.label("lop", false, {class: "control-label"}) 
     .controls 
     != form.checkbox("lop") 
    .control-group 
     != form.label("od", false, {class: "control-label"}) 
     .controls 
     != form.checkbox("od") 
    .control-group 
     != form.label("co", false, {class: "control-label"}) 
     .controls 
     != form.checkbox("co") 
    .control-group 
     != form.label("lrevision", false, {class: "control-label"}) 
     .controls 
     != form.checkbox("lrevision") 
    .control-group 
     != form.label("active", false, {class: "control-label"}) 
     .controls 
     != form.checkbox("active") 
    .form-actions 
     != form.submit('<i class="icon-ok icon-white"></i> Create employee', {class: 'btn btn-primary'}) 
     span= ' or ' 
     != linkTo('Cancel', pathTo.employees(), {class: 'btn'}) 
    != form.end() 
    #tabs-2 
    .page-header 
     h1 Index of employees 


    .row 
     .span12 
     p 
      != linkTo('<i class="icon-plus icon-white"></i> New employee', path_to.new_employee(), {class: 'btn btn-primary'}) 

    - if (employees.length) { 
    .row 
     .span12 
     table.table.table-striped 
      thead 
      tr 
       th ID 
       th.span3 Actions 
      tbody 
      - employees.forEach(function (employee) { 
      tr 
       td 
       != linkTo('employee #' + employee.id, path_to.employee(employee)) 
       td 
       != linkTo('<i class="icon-edit"></i> Edit', pathTo.edit_employee(employee), {class: 'btn btn-mini'}) + ' ' 
       != linkTo('<i class="icon-remove icon-white"></i> Delete', pathTo.employee(employee), {class: 'btn btn-mini btn-danger', method: 'delete', remote: true, jsonp: '(function (u) {location.href = u;})'}) 
      - }); 
    - } else{ 
    .row 
     .span12 
     p.alert.alert-block.alert-info 
      strong No employees were found. 
    - } 

Layout file

!!! 5 
html 
    head 
    title= title 
    != stylesheetLinkTag('http://ajax.googleapis.com/ajax/libs/jqueryui/1.9.1/themes/base/jquery-ui.css', 'bootstrap', 'application', 'bootstrap-responsive') 
    != javascriptIncludeTag('https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js', 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.9.1/jquery-ui.js', 'rails', 'application') 
    script 
     $(document).ready(function() { 
     $("#tabs").tabs(); 
     }); 
    != csrfMetaTag() 
    body 
    .navbar 
     .navbar-inner 
      .container 
       a.brand(href='#') Project name 

    .container 
     - var flash = request.flash('info').pop(); if (flash) { 
     .alert.alert-info= flash 
     - } 

     - flash = request.flash('error').pop(); if (flash) { 
     .alert.alert-error= flash 
     - } 

     != body 

     hr 
     footer 
     p © Company 2012 
    != contentFor('javascripts') 

Trả lời

4

The issue was with Fedora-16 mà tôi đang làm việc. Tệp tạm thời được tạo trong khi chỉnh sửa tức là., 'Index.jade ~' không bị xóa và do đó vấn đề xuất hiện.

Vấn đề này có thể được giải quyết trong Fedora-16 bằng một trong hai xóa các tập tin tạm thời 'index.jade ~' hoặc bằng đổi tên các module nút 'ngọc' thành 'ngọc ~'

1

Uh, bạn gần như chắc chắn có require('jade~') với một lỗi đánh máy đơn giản mà bạn muốn chỉ require('jade'). Kiểm tra đường dây nhanh app.engine('jade') của bạn như một khả năng khác đáng ngờ.

+0

tệp cần kiểm tra? – Okky

+0

Ứng dụng hoạt động tốt cho đến khi tôi thêm cảnh báo. – Okky

+1

Có thể bạn đã đặt tên tệp là 'server.js' hoặc' app.js'. Các điểm bằng chứng có sẵn hạn chế MẠNH M at ở một lỗi đánh máy cơ bản rất đơn giản. Tìm kiếm các tập tin của bạn cho 'jade ~' và sửa nó, sau đó tiếp tục với cuộc sống của bạn. Bạn nghĩ rằng nó đã làm việc tốt cho đến khi bạn thêm một cảnh báo, nhưng bạn chắc chắn là sai lầm. Không có cảnh báo trong node.js và những gì xảy ra trong trình duyệt sẽ không khiến nút không tìm thấy mô-đun ngọc. –

17

Tôi có khá cùng một vấn đề nhưng "Không thể tìm thấy mô-đun 'ngọc'", không phải 'ngọc ~'; và tôi khá chắc chắn rằng tôi đã làm "npm install jade". Sau một thời gian nghiên cứu, tôi phát hiện ra rằng vấn đề của tôi bởi vì tôi cài đặt nhanh trên toàn cầu trong khi ngọc bích được cài đặt cục bộ, tham chiếu đến trợ giúp này https://www.openshift.com/forums/express/nodejs-and-jade-error-cannot-find-module-jade Tôi giải quyết vấn đề của mình .. Tôi đăng nó ở đây nghĩ rằng nó có thể giúp một số người khác phải đối mặt với cùng một vấn đề tôi :)

9

Đối với tôi, vấn đề này hóa ra khác. Tôi đã cài đặt ngọc bích và thể hiện cả ở địa phương và trên toàn cầu với hy vọng họ sẽ tìm thấy nhau bằng cách nào đó, nhưng vẫn thể hiện là phàn nàn về ngọc bích.

lỗi của tôi trông như thế này:

Express server listening on port 3000 
Error: Cannot find module 'jade' 
    at Function.Module._resolveFilename (module.js:338:15) 
    at Function.Module._load (module.js:280:25) 
    at Module.require (module.js:364:17) 
    at require (module.js:380:17) 
    at new View (/Users/ajeetganga/node_modules/express/lib/view.js:43:49) 
    at Function.app.render (/Users/ajeetganga/node_modules/express/lib/application.js:488:12) 
    at ServerResponse.res.render (/Users/ajeetganga/node_modules/express/lib/response.js:798:7) 
    at exports.index (/Users/ajeetganga/Documents/WORKSPACE/TinyUrl/MyTinyUrl2/routes/index.js:7:7) 
    at callbacks (/Users/ajeetganga/node_modules/express/lib/router/index.js:164:37) 
    at param (/Users/ajeetganga/node_modules/express/lib/router/index.js:138:11) 

nếu bạn quan sát dòng này:

at new View (/Users/ajeetganga/node_modules/express/lib/view.js:43:49) 

Bạn sẽ thấy rằng nó không phải là vị trí mặc định để cài đặt NPM cho toàn cầu hay địa phương .. Vì vậy, như một công việc xung quanh, tôi đã cài đặt ngọc bích trong thư mục sau

cd /Users/ajeetganga/node_modules/ 
npm install jade 

I nghĩ rằng nó sẽ làm việc ngay cả khi tôi đã cài đặt ngọc bích từ thư mục/Users/ajeetganga/nhưng chưa bao giờ thử. :)

+0

Tôi đã có lỗi theo dõi lỗi tương tự trong khi tạo thủ công dự án nhanh và chạy trên nhật thực. Tôi đã cài đặt ngọc bích như bạn đã đề xuất ở gốc của dự án, nó đã hoạt động. – Venkat

1

Tôi gặp vấn đề tương tự sau khi chỉnh sửa tệp ngọc bích với Emacs. Giải pháp khá đơn giản: tìm file ngọc ~ và xóa nó đi.

18

Tôi đã gặp phải sự cố tương tự trong hướng dẫn về biểu tượng của trường học. Tôi giải quyết nó bằng cách bao gồm các phụ thuộc trong package.json:

NPM cài đặt --save bày tỏ ngọc

+0

Điều này đã giúp tôi. Sau khi đọc, tôi nhận ra rằng bằng cách nào đó tôi đã xóa mô-đun ngọc bích khỏi package.json của dự án của tôi, và đó là lý do tại sao nó không được tìm thấy. Thêm nó trở lại, đã cập nhật npm, và tất cả mọi thứ đã làm việc. – bearvarine

+0

Nó cũng giúp tôi :) – AnNaMaLaI

+0

Cảm ơn bạn vì điều này. Đã sử dụng Team Treehouse để học Node.js và họ đã có một phần toàn bộ về Jade (bây giờ đổi tên thành Pug) và đã trải qua một loạt các lần lặp lại cố gắng để làm cho nó hoạt động. Bài học kinh nghiệm. –

0

tôi đã cùng một vấn đề (ngọc bích-loader trong dự án webpack nguyên cảo của tôi +). Tôi đã giải quyết nó bằng cách cài đặt bộ nạp ngọc như là sự phụ thuộc ngang hàng.