Magento2 không đọc requestjs-config.js của tôi


17

Xin chào, tôi mới biết về Magento2 và đang cố gắng tìm hiểu cách thức hoạt động của RequireJS trong Magento.

Đây là tình huống của tôi:

Tôi có mô-đun sau:

app/code/Mymodule/Test/view/frontend/requirejs-config.js

Đây là nội dung của tập tin này:

var config = {
map: {
    '*': {
        jQuery110: "Mymodule_Test/js/jquery-1.10.2",
        jqueryNoConflict: 'Mymodule_Test/js/jquery.no-conflict',
        flexslider: 'Mymodule_Test/js/jquery.flexslider-min',
        header: 'Mymodule_Test/js/store/header'
    }
}
};

Chủ đề của tôi là ở vị trí này:

app/design/frontend/Mycompany/Basic

Javascripts của tôi ở vị trí sau:

app/code/Mymodule/Test/view/frontend/web/js/jquery.no-conflict.js
app/code/Mymodule/Test/view/frontend/web/js/jquery.flexslider-min.js
app/code/Mymodule/Test/view/frontend/web/js/store/header.js

Trong tệp PHTML:

app/code/Mymodule/Test/view/frontend/templates/home.phtml

Tôi đã thêm các dòng:

require(['jqueryNoConflict', 'flexslider'],function($, flexslider){
    (function($) {
        $(window).load(function () {
            $('.flexslider').flexslider();
        });
    })(jQuery);
});

Khi tôi kiểm tra trang của mình trong trình duyệt, tôi gặp lỗi 404 với các đường dẫn:

http://mag2.com.local/pub/static/frontend/Mycompany/Basic/en_US/flexslider.js

Nhưng nếu tôi thay đổi dòng [] thành này:

 require(['Mymodule_Test/js/jquery.no-conflict', 'Mymodule_Test/js/jquery.flexslider-min'],function($, flexslider){
        (function() {
            $(window).load(function () {
                $('.flexslider').flexslider();
            });
        })(jQuery);
    });

các tập tin đang tải.

Tôi cũng xóa bộ nhớ cache, chủ đề của tôi là chính xác, tôi đã thực hiện lệnh:

php bin/magento setup:static-content:deploy

Vì vậy, tôi không thể tìm ra lý do tại sao requestjs-config.js của tôi không tải. Tôi làm theo các tài liệu là tốt.

Xin vui lòng giúp đỡ


Còn nếu bạn muốn sử dụng một số tệp js tùy chỉnh trên tất cả các trang, không liên quan đến mô-đun thì sao? Cách đúng đắn để làm điều đó là gì? Xin vui lòng, đừng tham khảo tôi đến trang chính thức của Magento.
Anitr

Câu trả lời:


27

Tôi tìm thấy vấn đề.

Trong pub / static / _requirejs / frontend / Namespace / Theme / en_US , hãy xóa tệp requestjs-config.js .

Làm mới trang của bạn và nó sẽ được tạo lại với nội dung mới.

Nếu nó không hoạt động, hãy xóa các certjs-config.js và chạy các lệnh sau:

php bin/magento cache:clean
php bin/magento cache:flush
php bin/magento setup:upgrade
php bin/magento setup:di:compile

Có thể bao gồm nguyên mẫu.js không?
Slimshadddyyy 10/03/2016

Cảm ơn bạn .. Nó hoạt động với tôi .. :) +1 từ tôi
Prashant Patil

11

Vấn đề là bạn không kích hoạt chế độ nhà phát triển. Kết quả là, bộ đệm cache trong pub/staticthư mục.


7
Để bật chế độ nhà phát triển, bạn có thể nhấn lệnh sau trong CLI php bin / magento triển khai: mode: set developer
Bhupendra Jadeja

6

Sau khi triển khai lệnh, Bạn phải đặt chế độ nhà phát triển và xóa bộ đệm. Nó hoạt động tốt.

php bin/magento deploy:mode:set developer && php bin/magento cache:clean

Cũng xóa bộ nhớ cache của trình duyệt để xem hiệu quả.


1

Điều này có thể giúp người khác có vấn đề rất giống với địa phương với nginx. Khối / tĩnh không được viết lại chính xác và điều này cần được thêm vào mỗi bình luận này https://github.com/magento/magento2/issues/7869#issuecomment-268585438

location /static/ {
    if ($MAGE_MODE = "production") {
      expires max;
    }

    # Remove signature of the static files that is used to overcome the browser cache
    location ~ ^/static/version {
      rewrite ^/static/(version\d*/)?(.*)$ /static/$2 last;
    }

    location ~* \.(ico|jpg|jpeg|png|gif|svg|js|css|swf|eot|ttf|otf|woff|woff2)$ {
      add_header Cache-Control "public";
      add_header X-Frame-Options "SAMEORIGIN";
      expires +1y;

      if (!-f $request_filename) {
        rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource=$2 last;
      }
    }

    location ~* \.(zip|gz|gzip|bz2|csv|xml)$ {
      add_header Cache-Control "no-store";
      add_header X-Frame-Options "SAMEORIGIN";
      expires off;

      if (!-f $request_filename) {
         rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource=$2 last;
      }
    }

    if (!-f $request_filename) {
      rewrite ^/static/(version\d*/)?(.*)$ /static.php?resource=$2 last;
    }

    add_header X-Frame-Options "SAMEORIGIN";
}

0

Hãy chắc chắn rằng .htacesstập tin tồn tại trong pub/staticthư mục. và sau đó áp dụng lệnh triển khai.


-1

Bạn có thể làm theo các bước dưới đây và nó sẽ được sửa chữa.

1) Set triển khai chế độ để sản xuất - php magento triển khai: Chế độ: sản xuất bộ (js và css việc rút gọn sẽ làm việc với sản xuất mode.If bạn đang ở trong chế độ nhà phát triển với mã minified trên vấn đề này sẽ hiển thị như tôi đã trải qua nó Nếu việc rút gọn vô hiệu hóa bạn. cũng có thể giữ chế độ nhà phát triển. Đồng thời xác minh bằng cách sử dụng echo print_r ($ _ SERVER) trong index.php mà chế độ sản xuất hoặc chế độ nhà phát triển được đặt chính xác trước khi tải trang web)

2) Xóa tất cả các thiết lập bộ nhớ cache trong máy chủ

  • /etc/init.d/nginx khởi động lại
  • /etc/init.d/php5.6-fpm khởi động lại
  • /etc/init.d/varnish khởi động lại

3) Xóa bộ nhớ cache của trình duyệt và xem nó trong chế độ ẩn danh. Đó là nó!

Chúc mừng!


OP không đề cập đến việc Apache hay Nginx được sử dụng. Gần như an toàn khi cho rằng đó là Apache.
Chris K
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.