ERC721 upgradeable contract failed to migrate(Invalid number of parameters for "initialize".)

I followed the document and setup a contract like this, but migrate fail on my development environment:

contract SnackNFT is Initializable, ERC721PresetMinterPauserAutoIdUpgradeable {
    function initialize() initializer public virtual {
       __ERC721PresetMinterPauserAutoId_init("SnackNFT","SNK","");
    }
}

2_deploy_snack.js:
const { deployProxy, upgradeProxy } = require('@openzeppelin/truffle-upgrades');

const Snack = artifacts.require('SnackNFT');

module.exports = async function (deployer) {
  const instance = await deployProxy(Snack, [42], { deployer });
  console.log('Deployed', instance.address);
};

and got the error message:

Error: Invalid number of parameters for "initialize". Got 1 expected 0!
    at Object.InvalidNumberOfParams (/usr/lib/node_modules/truffle/build/webpack:/node_modules/web3-core-helpers/src/errors.js:32:1)
    at Object._createTxObject (/usr/lib/node_modules/truffle/build/webpack:/node_modules/web3-eth/node_modules/web3-eth-contract/src/index.js:813:1)
    at Object._createTxObject (/usr/lib/node_modules/truffle/build/webpack:/node_modules/web3-eth/node_modules/web3-eth-contract/src/index.js:811:1)
    at getInitializerData (/home/ym_chuang/NFT-upgradeable/NFT-upgradeable/node_modules/@openzeppelin/truffle-upgrades/src/deploy-proxy.ts:87:46)
    at deployProxy (/home/ym_chuang/NFT-upgradeable/NFT-upgradeable/node_modules/@openzeppelin/truffle-upgrades/src/deploy-proxy.ts:47:16)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
    at module.exports (/home/ym_chuang/NFT-upgradeable/NFT-upgradeable/migrations/2_deploy_snack.js:6:20)
    at Migration._deploy (/usr/lib/node_modules/truffle/build/webpack:/packages/migrate/Migration.js:79:1)
    at Migration._load (/usr/lib/node_modules/truffle/build/webpack:/packages/migrate/Migration.js:61:1)
    at Migration.run (/usr/lib/node_modules/truffle/build/webpack:/packages/migrate/Migration.js:212:1)
    at Object.runMigrations (/usr/lib/node_modules/truffle/build/webpack:/packages/migrate/index.js:150:1)
    at Object.runFrom (/usr/lib/node_modules/truffle/build/webpack:/packages/migrate/index.js:110:1)
    at Object.run (/usr/lib/node_modules/truffle/build/webpack:/packages/migrate/index.js:87:1)
    at runMigrations (/usr/lib/node_modules/truffle/build/webpack:/packages/core/lib/commands/migrate.js:263:1)
    at Object.run (/usr/lib/node_modules/truffle/build/webpack:/packages/core/lib/commands/migrate.js:228:1)
    at Command.run (/usr/lib/node_modules/truffle/build/webpack:/packages/core/lib/command.js:136:1)
Truffle v5.2.2 (core: 5.2.2)
Node v12.21.0

:1234: Code to reproduce


:computer: Environment

Truffle v5.2.2 (core: 5.2.2)
Node v12.21.0
solidity ^0.8.0
npm 7.17.0

You’re passing in 42 as an initializer argument but your initialize function doesn’t have any arguments.