Lỗi Configuration property "token" is not defined khi dùng PM2



  • Xin chào các bạn,
    Hiện tại mình đang dùng PM2 để quản lý Node app.
    Mình gặp 1 lỗi đó là khi dùng lệnh
    Pm2 start index
    Thì app khởi động lên xong gặp lỗi ngay.
    Xem log của PM2 thì thấy báo

    WARNING: NODE_APP_INSTANCE value of '0' did not match any instance config file names.
    WARNING: See https://github.com/lorenwest/node-config/wiki/Strict-Mode
    WARNING: No configurations found in configuration directory:/home/rsa-key-20171007/config
    WARNING: To disable this warning set SUPPRESS_NO_CONFIG_WARNING in the environment.
    Error: Configuration property "token" is not defined
    at Config.get (/home/rsa-key-20171007/app/node_modules/config/lib/config.js:181:11)
    at Object.<anonymous> (/home/rsa-key-20171007/app/index.js:23:28)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Object.<anonymous> (/usr/local/lib/node_modules/pm2/lib/ProcessContainerFork.js:70:21)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Module.runMain (module.js:604:10)
    at run (bootstrap_node.js:383:7)
    at startup (bootstrap_node.js:149:9)

    Nội dung khai báo config trong index line23 như sau:

    const TOKEN = (process.env.APP_TOKEN) ? process.env.APP_TOKEN : config.get('token');

    Vấn đề ở đây là nếu gõ node index thì app vẫn chạy bình thường. Nhưng nếu khởi động app bằng PM2 thì lại gặp lỗi.
    Bạn nào đã gặp và có hướng nào xử lý giúp mình với ạ.
    Cám ơn mọi người.


  • Global Moderator

    @lamphanqt Bạn kiểm tra xem pm2 đang sử dụng biến môi trường NODE_ENV là gì ? Có 2 tình huống mà bạn cần kiểm tra xem tn.

    • Nếu NODE_ENV=production, thì kiểm tra file cấu hình ./config/production.json (hoặc .yml nếu bạn dùng YAML) đã có cấu hình token chưa ?
    • Nếu NODE_ENV=development, thì kiểm tra file cấu hình ./config/default.json (hoặc .yml nếu bạn dùng YAML) đã có cấu hình token chưa ?

    Tech-nông
    Profile: about.me/vunb
    Github: github.com/vunb
    Twitter: @nhubaovu

    0


  • Cám ơn Mod,
    Mình thử kiểm tra NODE_ENV thì báo undefined

    [email protected]:~$ node
    process.env.NODE_ENV
    undefined

    Vậy mình phải làm thế nào ?
    File index mình chạy nằm ở /home/rsa-key-20171007/app/index.js


  • Global Moderator

    @lamphanqt Bạn phải kiểm tra trong ứng dụng khi chạy chứ? Đâu phải trên cmd/terminal như kia :D

    Thế này nhé! Bạn tạo 1 thư mục config ngang cấp với file package.json, nếu có rồi thì thôi, sau đó tạo cả 2 file default.jsonproduction.json có cùng nội dung như sau:

    {
        "token": "XXXXXX_TOKEN_CUA_BAN"
    }
    

    Chạy lại bằng pm2 xem ok không ?

    Tech-nông
    Profile: about.me/vunb
    Github: github.com/vunb
    Twitter: @nhubaovu

    0

Log in to reply